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

构建用于部署的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:56:41