Devops 构建管道 - 错误 MSB3073:命令 XCOPY

时间:2021-05-31 12:51:59

标签: c# azure azure-devops msbuild azure-pipelines

我的解决方案包含多个项目,我正在尝试在单个项目 (.csproj) 上构建 Azure devops 管道,但在构建时出现此错误。

##[error]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(5574,5):错误 MSB3073:命令“ XCOPY /YD:\a\1\s\XXX\XXX\bin\Release\XXX.dll UndefinedNuget\lib\net40" 以代码 4 退出。

这是我的 azure-pipelines.yml 文件

trigger:
- Sprint47

pool:
  vmImage: 'windows-latest'
  
variables:
  solution: '**/*.sln'
  buildPlatform: 'AnyCPU'
  buildConfiguration: 'Release'

steps:

- task: VSBuild@1
  inputs:
    solution: 'XXX\XXX\XXX.csproj'
    msbuildArgs: '/p:Configuration=Release /p:Platform=AnyCPU /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: 'AnyCPU'
    configuration: 'Release'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1

我该如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

首先,您应该添加 nuget restore 任务来恢复必要的 nuget 包,以确保将所需的 dll 复制到 bin 文件夹中。

像这样:

steps:
- task: NuGetToolInstaller@1   
  inputs:
    versionSpec: 5.x
    
- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
   inputs:
    solution: 'XXX\XXX\XXX.csproj'
    msbuildArgs: '/p:Configuration=Release /p:Platform=AnyCPU /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: 'AnyCPU'
    configuration: 'Release'

此外,您应该检查 XCOPY /Y .... 文件下的命令 csproj。确保 xcopy /Y file1 path1 是合法的。

我注意到 UndefinedNuget\lib\net40 并且您应该检查该属性是否被正确解析。使用正确的属性或路径。

另外,请另外添加 /R 以运行命令。

像这样:

XCOPY /Y /E /R file1 path1

如果上述方法没有帮助,请不要忘记与我们分享 XCOPY 命令以解决问题。

相关问题