Azure DevOps管道中MSBuild@1在ubuntu-latest无法找到.NET Core 7
问题原因
你在ubuntu-latest镜像上遇到的构建错误,核心原因是:Linux环境下的MSBuild@1任务默认调用的是Mono提供的MSBuild工具,而Mono的MSBuild并不支持识别.NET 7(.NET Core 5及以后版本)的引用程序集。Windows镜像能成功构建,是因为Windows平台的MSBuild和Visual Studio/.NET SDK深度集成,可以正确找到.NET 7的相关依赖文件。
解决方案
直接将MSBuild@1任务替换为DotNetCoreCLI@2的build命令即可——你已经通过UseDotNet@2安装了.NET 7 SDK,DotNetCoreCLI会自动使用该SDK完成项目构建。
修改后的管道片段如下:
pool: vmImage: ubuntu-latest # vvmImage: windows-latest # vmImage: windows-2022 # Old App building on windows ltssc 2019 #vmImage: windows-2019 stages: - stage: displayName: 'Build' jobs: - job: 'Build' displayName: 'Build the solution' steps: - task: UseDotNet@2 displayName: 'Use .NET Core sdk' inputs: packageType: 'sdk' version: 7.0.x includePreviewVersions: true - task: DotNetCoreCLI@2 inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 inputs: command: 'build' projects: '**/*.sln' arguments: '--configuration Release' # 可选,按需指定构建配置
如果你的项目需要传递特定的MSBuild参数,也可以通过DotNetCoreCLI的arguments字段添加,比如指定输出目录、定义编译常量等。
内容的提问来源于stack exchange,提问作者amber
相关产品推荐
相关产品推荐

