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 命令来解决问题。
我的解决方案包含多个项目,我正在尝试在单个项目 (.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 命令来解决问题。