为什么C:\ Program Files \ dotnet \ sdk \ 3.1.201中缺少msbuild.exe?导致AzureDevOps构建步骤失败

时间:2020-05-07 17:08:20

标签: azure azure-devops

我有一个非常简单的WPF项目(.Net 4.7.2)和单元测试项目(MSTest .Net Core),并且我试图将其构建在Azure Pipelines中,并且出现以下错误:

2020-05-07T16:41:52.9562570Z C:\ Program 文件\ dotnet \ sdk \ 3.1.201 \ Microsoft.Common.CurrentVersion.targets(3032,5): 错误MSB4216:无法运行“ GenerateResource”任务,因为 MSBuild无法使用运行时“ CLR4”创建或连接到任务主机 和架构“ x86”。请确保(1)请求的运行时 和/或体系结构在计算机上可用,并且(2) 所需的可执行文件“ C:\ Program Files \ dotnet \ sdk \ 3.1.201 \ MSBuild.exe” 存在并且可以运行。 [C:\ agent_work \ 4 \ s \ RsSolution4 \ WpfApp1 \ WpfApp1.csproj] 2020-05-07T16:41:53.1174401Z ## [错误]错误:进程'C:\ Program Files \ dotnet \ dotnet.exe'失败,退出代码为1

我在建议的文件夹中寻找了msbuild.exe,并确定它不存在。该路径存在并且文件夹中有很多文件,只是msbuild.exe没有。有一个msbuild.dll。

这是我的Yaml文件:

trigger:
- master

pool: 
  name: Default
  demands: msbuild

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: DotNetCoreCLI@2
  displayName: Restore NuGet
  inputs:
    command: 'custom'
    projects: '**/*.csproj'
    custom: 'restore'

- task: MSBuild@1
  inputs:
    solution: '**/*.sln'
    msbuildLocationMethod: 'location'
    msbuildLocation: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\msbuild.exe'
    configuration: 'Release'    
    clean: true

- task: DotNetCoreCLI@2
  displayName: SSP Automated Testing
  inputs:
    command: 'test'
    projects: '**/*Test*.csproj'
    arguments: '--configuration $(buildConfiguration)'
    testRunTitle: 'SSP Testing'

1 个答案:

答案 0 :(得分:1)

确保您添加了UseDotNet任务,以确保在代理上可以使用正确版本的SDK:

- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '3.1.201'

我选择使用dotnet build任务来构建.NET Core项目,并使用WPF项目的VisualStudioBuild任务,那样您就不会在那时将框架类型和SDK混合在一起相同的解决方案版本。