【问题标题】:VSTS: Directory 'd:\a\1\a' is empty. Nothing will be added to build artifact 'drop'VSTS:目录 'd:\a\1\a' 为空。不会添加任何内容来构建工件“drop”
【发布时间】:2017-05-24 08:56:17
【问题描述】:

我正在 VSTS 中构建我的第一个版本,我不得不就 SO 提出一些问题。 我现在已经能够恢复 nuget 包并构建我的项目,但现在我必须确保将工件复制到正确的位置。 由于这个原因,我的最后一次构建尝试失败:目录 'd:\a\1\a' 为空。不会添加任何内容来构建工件“drop”。 我的构建定义为;

复制文件

.Net Core 构建;

然后发布;

从构建中我得到了这个错误;

Directory 'd:\a\1\a' is empty. Nothing will be added to build artifact 'drop'.

我该如何解决这个问题?

【问题讨论】:

  • 似乎在 VS 构建步骤中,您在 MSBuild 参数 中对 /p 参数的设置不正确。您可以参考stackoverflow.com/questions/23112165/… 进行属性设置。另外如果您使用的是私有代理,您可以检查路径**\bin\$(BuildConfiguration) 是否有构建文件。
  • 详细的构建日志是什么?您可以在 OneDrive 上共享它。

标签: visual-studio-2017 azure-pipelines


【解决方案1】:

您需要复制和添加工件,所以对我来说,我必须将此代码添加到 .yaml 文件的末尾

- task: CopyFiles@2
  inputs:
    targetFolder: '$(Build.ArtifactStagingDirectory)'    

- task: PublishBuildArtifacts@1    
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'

【讨论】:

  • 如果我按原样编写上述步骤,这将起作用。假设如果我明智地编写阶段(构建、测试、上传工件),它会出现同样的错误
  • 谢谢!它也帮助我构建了 npm。
【解决方案2】:

首先,删除 Properties.EF6 (/t:;Properties.EF6;Sir.Domain) 之前的“;”。

注意:如果 Sir.WebUI 依赖于 Properties.EF6、Sir.Domain、Sir.EF6 和 StandardClassLibrary,您只需要构建 Sir.WebUI 项目。

其次,对于.Net Core任务,将build命令改为publish,参数为-o $(build.artifactstagingdirectory)\SIR .

第三,删除复制文件任务(不需要将文件复制到工件)。

【讨论】:

  • 现在一切都变了。所有项目都依赖于 Properties.API,我签入了解决方案属性。但只有每个项目都会导致错误消息,第一个是; SIR\Properties.API.csproj:SIR\Properties.API.csproj(0,0):错误 MSB4057:项目中不存在目标“Properties.API”。
  • @arame3333 改用 Properties_API,例如:/t:Properties_API。
  • 我在上一条评论中的意思是我输入了 /t:Properties.API 并收到了描述的错误消息。如果我应该按字面意思接受您的回复,我也尝试了 Properties_API 但当然该项目不存在,并且我收到一条错误消息。
  • 我现在很困惑,你现在有什么问题。您可以在可以重现此问题的 OneDrive 上共享简单的项目和构建日志。另一方面,我的意思是,如果项目名称是 Properties.API,您可以使用 /t:Properties_API。
  • 好的。我无权访问 OneDrive。当我尝试 /t:Properties_API 时,我收到了这个错误消息; SIR\Properties.API.csproj:SIR\Properties.API.csproj(0,0):错误 MSB4057:项目中不存在目标“Properties_API”
【解决方案3】:

如果您计划在 azure devops 中使用发布管道,则默认构建参数不起作用。

在构建步骤中对 MS BuildArguments 使用以下命令会在暂存目录中放置一个包:$(build.artifactstagingdirectory)

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

在发布工件步骤中,使用与值相同的位置:

$(build.artifactstagingdirectory)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多