MacOS High Sierra中Visual Studio for Mac编译报错:找不到Microsoft.NET.Sdk
解决MacOS High Sierra上Xamarin/ASP.NET项目编译错误的步骤
你遇到的这两个错误——找不到Microsoft.NET.Sdk和Microsoft.CSharp.targets——大概率是Mono/.NET Core安装不完整、VS for Mac配置冲突或者版本兼容性问题导致的,下面是一步步的排查和修复方案:
1. 先验证基础组件的完整性
首先确认Mono和.NET Core是否正常安装:
- 打开终端,运行以下命令检查Mono版本:
输出应该显示版本为mono --version5.10.1(和错误日志里的路径匹配),如果命令报错或者版本不对,说明Mono安装有问题。 - 再检查.NET Core SDK:
确保列表里有你创建项目时选择的.NET版本(比如Xamarin Forms当时通常需要.NET Core 2.1/2.2)。dotnet --list-sdks
2. 修复Mono安装(解决MSB4019错误)
错误里提到的Microsoft.CSharp.targets是Mono xbuild的核心文件,缺失说明Mono安装不完整或损坏:
- 先卸载现有Mono:打开
/Library/Frameworks/Mono.framework/Versions,删除5.10.1目录。 - 不要单独安装独立版Mono,直接通过VS for Mac的安装程序重新安装配套的Mono组件:打开VS for Mac,点击菜单栏的
Visual Studio > Check for Updates,在更新面板里确保"Mono Framework"组件已安装并更新到对应版本。
3. 修复.NET Core SDK关联(解决Microsoft.NET.Sdk找不到的错误)
虽然SDK Manager显示了路径,但VS for Mac可能没正确加载:
- 关闭VS for Mac,找到你的项目目录,删除
.vs隐藏文件夹(如果存在),重新打开项目尝试编译。 - 进入项目目录,在终端运行:
手动恢复项目依赖,之后回到VS for Mac重新编译。dotnet restore - 如果还是不行,卸载当前的.NET Core SDK,下载和VS for Mac版本兼容的SDK重新安装(比如VS for Mac 7.6对应.NET Core 2.1)。
4. 重置VS for Mac配置
有时候配置文件损坏会导致组件识别异常:
- 关闭VS for Mac,删除以下两个目录:
~/Library/Preferences/VisualStudio/7.0 # 版本号对应你的VS for Mac版本,比如7.6的话可能是7.6 ~/Library/Caches/VisualStudio/7.0 - 重新打开VS for Mac,它会自动生成新的配置文件,之后再尝试创建项目。
5. 检查项目模板兼容性
创建项目时,确保选择的.NET版本和你安装的SDK完全匹配——比如如果你只装了.NET Core 2.1,就不要选择.NET Core 3.0的模板,MacOS High Sierra 10.13.4对高版本.NET Core的支持有限。
额外注意事项
- 不要同时安装独立版Mono和VS for Mac自带的Mono,两者容易冲突导致组件缺失。
- 安装所有组件时确保网络稳定,避免安装中断导致文件损坏。
内容的提问来源于stack exchange,提问作者jose luis gonzalez clua
相关产品推荐
相关产品推荐

