【问题标题】:VSTS build ended with empty build artifactsVSTS 构建以空构建工件结束
【发布时间】:2018-06-13 01:15:33
【问题描述】:

我们使用 VSTS 构建使用 ASP.Net 模板。我们正在传递 MSBuild 参数,如下所示 -

/p:DeployOnBuild=true /p:WebPublishMethod=包 /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\"

我们没有看到构建错误。从日志中我们观察到一行 -

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /LRM -p ..\LRM\ -u -f -d PrecompiledWeb\LRM\

其中 LRM 是我们正在构建的 .NET sln 名称。该 sln 包含多个项目以及 LRM 网站。

在构建管道结束时,我们没有看到任何工件生成。我们在“Publish Build Artifacts”中看到一条警告 -

2018-01-03T06:07:47.9208838Z ##[警告]目录 'D:\VSTS Agents\DEV-QAS\A1\66\a' 为空。不会添加任何内容来构建工件“drop”。

【问题讨论】:

    标签: asp.net msbuild azure-devops azure-pipelines


    【解决方案1】:

    ASP.Net Web API MSBuild 参数:/p:OutDir=$(Build.ArtifactStagingDirectory) /p:SkipInvalidConfigurations=true

    发布构建工件: 发布路径:$(Build.ArtifactStagingDirectory)_PublishedWebsites

    以上配置对我有用,请查看图片了解详情。

    【讨论】:

      【解决方案2】:

      它是网站,因此您不能将其发布为 Web 应用程序。

      首先,正如ChamindaC所说,你可以指定OutDir参数,但它不会生成web部署包,你可以通过归档任务将文件夹归档到zip . (注:值应为/p:OutDir="$(build.stagingDirectory)\\"

      其次,它可以在创建发布配置文件后生成publishproj文件(右键单击网站>发布Web App)。因此,您可以使用您的 MSBuild 参数在 Visual Studio BuildMSBuild 任务中指定该文件,以将网站发布到 Web 部署包。

      【讨论】:

      • 考虑到您的第一点和第二点,您能否指定在这种情况下总的 MSbuild 参数应该是多少
      • 第一种方式,/p:DeployOnBuild=true /p:SkipInvalidConfigurations=true /p:OutDir="$(build.stagingDirectory)\\"。对于第二种方式,您可以按照您所说的使用原始参数。
      • 我正在使用下面的 MSBuild 参数但没有成功...... /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p :OutDir="$(build.stagingDirectory)\\" ..... 在构建时出现以下错误............错误 ASPCONFIG: 使用注册为 allowDefinition='MachineToApplication' 的部分是错误的超出应用层。此错误可能是由于虚拟目录未在 IIS 中配置为应用程序所致。
      • 你能用一个新项目重现这个问题吗?如果是这样,您可以在 OneDrive 上共享示例项目。
      • @DimitryKhan 现在结果如何?可以分享一下 OneDrive 上的示例项目吗?
      【解决方案3】:

      使用下面作为 msbuild 参数(/p:OutDir="$(build.stagingDirectory)" 是差异)

      /p:TransformConfigFiles=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:OutDir="$(build.stagingDirectory)"
      

      如果您只想要网站输出,请使用发布任务路径发布为“$(build.stagingDirectory)\_PublishedWebsites”。如果暂存目录中的所有文件都需要使用“$(b​​uild.stagingDirectory)”作为发布路径

      【讨论】:

        【解决方案4】:

        我不知道原因,但也许这组以 MSDeploy 为目标的 MSBuild 参数的替代集将被证明是一种解决方法。

        /p:SkipInvalidConfigurations=true /p:DeployTarget=Package /p:PackageTempRootDir="$(Build.ArtifactStagingDirectory)"
        

        【讨论】:

        • 尝试使用该配置。但是 ..\a 的相同空目录
        猜你喜欢
        • 1970-01-01
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多