构建用于部署的ASP.NET Core应用:dotnet build命令报错排查
问题原因与解决方法
为什么会出现osx-win-x86?
这是因为你的项目配置里可能已经指定了macOS相关的RuntimeIdentifier(RID),或者--arch参数的行为是和当前系统的RID前缀拼接。当你用--arch win-x86时,dotnet CLI会把当前系统的RID(比如osx-x64或osx-arm64)的前缀和你指定的架构强行组合,生成了无效的osx-win-x86标识符。
另外要注意,--arch参数原本是用来指定当前系统下的目标架构,并非跨平台构建的正确参数,跨平台构建需要直接指定完整的RID。
解决步骤
用
--runtime参数替代--arch:直接指定完整的目标运行时标识符,这是跨平台构建的标准写法,不会和当前系统RID拼接:dotnet build --runtime win-x86 --self-contained true # 简写形式 dotnet build -r win-x86 --self-contained true检查并修改项目配置:打开你的
.csproj或Directory.Build.props文件,查看是否有硬编码的RuntimeIdentifier或RuntimeIdentifiers配置。比如如果有:<RuntimeIdentifier>osx-x64</RuntimeIdentifier>可以将其移除,或者修改为包含目标RID的列表:
<RuntimeIdentifiers>osx-x64;win-x86</RuntimeIdentifiers>之后再用
-r win-x86参数构建即可。升级dotnet SDK版本:部分旧版本的dotnet CLI对跨平台构建的参数处理存在bug,升级到.NET 6及以上的LTS版本,能避免这类参数拼接的问题。
内容的提问来源于stack exchange,提问作者Jesse
相关产品推荐
相关产品推荐

