情景
项目“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 框架。