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

Devops Build Pipeline - Error MSB3073: The command XCOPY

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

##[错误]C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(5574,5):错误 MSB3073:命令“XCOPY /Y D:\a\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

我该如何解决这个问题。

首先,您应该添加 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'

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

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

此外,请在 运行 命令中额外添加 /R

像这样:

XCOPY /Y /E /R file1 path1

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