M1芯片Mac首次构建解决方案遇NU1102错误求助
解决M1 Mac上.NET项目构建NU1102错误的办法
解决方案
1. 适配.NET7的ILCompiler包版本
该错误的核心是.NET 7.0.4对应的runtime.osx-arm64.Microsoft.DotNet.ILCompiler包不存在于NuGet源中。你可以调整项目依赖的Microsoft.DotNet.ILCompiler版本,使用.NET7生态中存在的稳定版本:
- 打开项目的
.csproj文件,找到Microsoft.DotNet.ILCompiler的引用项,将版本号改为7.0.0(或其他.NET7稳定版):<PackageReference Include="Microsoft.DotNet.ILCompiler" Version="7.0.0" /> - 或者使用版本通配符自动匹配兼容版本:
<PackageReference Include="Microsoft.DotNet.ILCompiler" Version="7.0.*" />
修改后重新构建项目,NuGet会自动拉取对应存在的runtime.osx-arm64版本包。
2. 禁用AOT编译(非必要场景)
如果你的项目不需要AOT(提前编译)特性,可以直接关闭相关配置来消除对该包的依赖:
- 打开
.csproj文件,查找并删除或注释以下配置:<PublishAot>true</PublishAot> - 同时检查是否有其他与AOT相关的PropertyGroup配置,一并移除后重新构建。
3. 使用.NET CLI构建.NET8预览版项目
虽然Visual Studio for Mac暂不支持.NET8预览版,但.NET CLI是独立于IDE的,可以直接用它来构建.NET8项目:
- 确认已安装.NET8预览版SDK:
dotnet --list-sdks - 修改项目的
.csproj文件,将目标框架改为.NET8:<TargetFramework>net8.0</TargetFramework> - 在项目根目录下执行CLI构建命令:
若需要指定SDK版本,可使用:dotnet builddotnet build --framework net8.0 --sdk-version 8.0.100-preview.2.23157.25
4. 验证.NET7 SDK完整性
确保你的.NET7 SDK安装完整,缺少组件可能导致依赖解析异常:
- 运行命令检查SDK和运行时状态:
dotnet sdk check - 如果发现缺失或需要更新,重新下载安装官方的.NET7 SDK包,覆盖现有安装后再尝试构建。
内容的提问来源于stack exchange,提问作者Yahya Z
相关产品推荐
相关产品推荐

