You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下用MSBuild构建时,DotNet 7的正确工具安装目录是什么?

问题描述

在Azure Pipelines的ubuntu-latest虚拟机中,通过UseDotNet任务成功安装了.NET 7 SDK(版本7.0.400),但直接运行MSBuild命令时出现找不到.NET 7引用程序集的错误,切换为dotnet build则构建成功。

错误日志

/usr/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(1232,5): error MSB3971: The reference assemblies for ".NETFramework,Version=v7.0" were not found. You might be using an older .NET SDK to target .NET 5.0 or higher. Update Visual Studio and/or your .NET SDK.

.NET 7安装日志

Tool to install: .NET Core sdk version 7.x.
Found version 7.0.400 in channel 7.0 for user specified version spec: 7.x
Version 7.0.400 was not found in cache.
Getting URL to download .NET Core sdk version: 7.0.400.
Detecting OS platform to find correct download package for the OS.
/home/vsts/work/_tasks/UseDotNet_b0ce7256-7898-45d3-9cb5-176b752bfea6/2.226.0/externals/get-os-distro.sh
get-os-distro: Error: Distribution specific OS name and version could not be detected: UName = Linux
Primary:linux-x64
Legacy:-x64
Detected platform (Primary): linux-x64
Detected platform (Legacy): -x64
Downloading: dotnet-sdk-7.0.400-linux-x64.tar.gz
Extracting downloaded package /home/vsts/work/_temp/69b9d9ab-bd0f-4bfa-bf4d-ffe6357c4567.
Extracting archive
/usr/bin/tar xC /home/vsts/work/_temp/4f0cd099-0e01-4eab-82d0-de74f4cfbe98 -f /home/vsts/work/_temp/69b9d9ab-bd0f-4bfa-bf4d-ffe6357c4567
Successfully installed .NET Core sdk version 7.0.400.
Creating global tool path and pre-pending to PATH.
Finishing: Install .NET Core SDK

原因分析

ubuntu-latest虚拟机默认预装的MSBuild属于Mono工具链,它不会自动识别通过UseDotNet任务安装的.NET SDK。而dotnet build调用的是.NET SDK自带的MSBuild,能正确找到刚安装的.NET 7环境,因此构建成功。

解决方案

有两种可行的解决方式:

1. 使用.NET SDK自带的MSBuild

直接调用.NET SDK中的MSBuild可执行文件,在Azure Pipelines中可以用以下命令:

dotnet msbuild YourProject.csproj

这种方式和dotnet build本质一致,能确保使用对应.NET版本的MSBuild。

2. 配置环境变量让Mono MSBuild识别.NET SDK

将.NET SDK的引用程序集路径添加到Mono的MSBuild搜索路径中,在Azure Pipelines任务中添加脚本:

export MSBuildSDKsPath=$(DOTNET_ROOT)/sdk/$(DOTNET_VERSION)/Sdks
export FrameworkPathOverride=$(DOTNET_ROOT)/shared/Microsoft.NETCore.App/$(DOTNET_VERSION)

执行完该脚本后再运行MSBuild命令,即可让Mono的MSBuild找到.NET 7的引用程序集。


内容的提问来源于stack exchange,提问作者Alo81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:43:39