NETSDK1005 和 NETSDK1047:资产文件缺少目标

本文适用于:✔️ .NET Core 2.1.100 SDK 及更高版本

当 .NET SDK 发出错误 NETSDK1005 或 NETSDK1047 时,项目的资产文件缺失某个目标框架的相关信息。 NuGet 在“obj”文件夹中写入名为 project.assets.json 的文件,.NET SDK 使用该文件来获取有关要传递到编译器的包的信息 。 在 .NET 5 中,NuGet 添加了名为 TargetFrameworkAlias 的新字段,以便早期版本的 MSBuild 或 NuGet 在没有新字段的情况下生成资产文件。 有关详细信息,请参阅错误 NETSDK1005

可以采取下面的一些操作来解决错误:

  • 确保使用的是 MSBuild 版本 16.8 或更高版本以及 NuGet 版本 5.8 或更高版本,并在更新工具后还原项目(运行 dotnet restore)。 使用 NuGet 版本 5.8 或更高版本时,应使用 Visual Studio 2019 版本 16.8 或更高版本、MSBuild 版本 16.8 或更高版本以及 .NET 5 SDK 或更高版本。

  • 如果在安装版本 16.8 或在更改项目的目标框架后首次在 Visual Studio 2019 中生成项目时出现错误,请再次生成项目。

  • 在生成项目之前删除“obj”文件夹。

  • 请确保项目的 TargetFrameworks 属性中包含缺少的目标值。

  • 如果要生成 Docker 映像,请确保 .dockerginore 文件忽略 bin 和 obj 目录。 有关详细信息,请参阅 GitHub 拉取请求 dotnet/docs #29530

  • 如果尝试在 Android 模拟器上运行 Maui 应用,请打开 Android SDK 和工具,并在“平台和工具”选项卡下添加缺少的平台。