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

project.assets.json含意外目标引发NETSDK1047错误的解决方法

解决NETSDK1047错误的方案

原因分析

.NET Framework工具链对带OS版本的Runtime Identifier(如win7-x86)会自动映射到基础RID(win-x86),但restore生成的project.assets.json中虽包含该目标,构建时却无法正确匹配,从而触发报错。

方案一:改用基础Runtime Identifiers

修改项目配置,将net48对应的RuntimeIdentifiers替换为不带OS版本的基础RID,适配.NET Framework工具链的处理逻辑:

<PropertyGroup>
  <TargetFrameworks>net48;net8.0-windows</TargetFrameworks>
  <OutputType>Exe</OutputType>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)'=='net48'">
  <RuntimeIdentifiers>win-x64;win-x86</RuntimeIdentifiers>
</PropertyGroup>

操作步骤:

  • 删除项目根目录下的obj文件夹
  • 重新执行 dotnet restore
  • 再次执行构建命令

方案二:构建时明确指定目标RID

如果必须保留win7-*格式的RID,构建时直接指定对应的RID,避免工具自动映射到基础RID:

# 针对win7-x86构建
dotnet build -r win7-x86

# 针对win7-x64构建
dotnet build -r win7-x64

方案三:禁用RID自动映射

添加UseRidGraph属性禁用RID的自动映射逻辑,阻止生成额外的win-x86目标:

<PropertyGroup>
  <TargetFrameworks>net48;net8.0-windows</TargetFrameworks>
  <OutputType>Exe</OutputType>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)'=='net48'">
  <RuntimeIdentifiers>win7-x64;win7-x86</RuntimeIdentifiers>
  <UseRidGraph>false</UseRidGraph>
</PropertyGroup>

操作步骤:

  • 删除项目根目录下的obj文件夹
  • 重新执行 dotnet restore
  • 再次执行构建命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:52:46