NuGet 错误 NU1018

情景

项目“MyProject”正在尝试还原重复的框架,仅当.NET SDK 为 10.0.300 或更高版本时,默认依赖项解析程序才支持这些框架。 升级.NET SDK 或删除 RestoreUseLegacyDependencyResolver 以使用此功能。

問题

项目文件包含多个 TargetFrameworks 解析为同一 NuGet 框架的条目。 此方案称为框架别名,其中不同的 TargetFramework 属性映射到相同的基础框架。

例如,如下所示的项目文件定义了两个解析为同一 net9.0 NuGet 框架的目标框架:

<PropertyGroup>
  <TargetFrameworks>net9.0-custom1;net9.0-custom2</TargetFrameworks>
</PropertyGroup>

框架别名仅在默认依赖项解析程序中受支持,这需要.NET SDK 10.0.300 或更高版本(SdkAnalysisLevel10.0.300 或更高版本)。 当旧依赖项解析程序处于活动状态(因为 SDK 版本较旧或已 RestoreUseLegacyDependencyResolver 设置),资产文件格式不支持重复框架,NuGet 将引发此错误。

解决方案

使用以下方法之一来解决此错误:

  • 将 sdk 10.0.300 或更高版本更新为 .NET SDK 10.0.300>,后者使用支持框架别名的默认依赖项解析程序。
  • 从项目文件中删除该RestoreUseLegacyDependencyResolver属性,或者Directory.Build.props如果已设置该属性。 这允许 NuGet 使用默认依赖项解析程序。
  • 属性TargetFrameworks,以便每个目标框架解析为唯一的 NuGet 框架。