.NET Core 2.0升级:PackageTargetFallback和AssetTargetFallback不能同时使用
Upgrading to .NET Core 2.0: PackageTargetFallback and AssetTargetFallback cannot be used together
升级正在编译的项目并且在 .NET Core 1.0 或 1.1 上 运行 正常时,将目标框架更新为 .NET Core 2.0 (netcoreapp2.0
) 会导致构建失败并显示以下错误:
error NU1003: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.
这个错误的原因是什么,如何解决才能重新构建项目?
在 .NET Core 1.0 和 1.1 中,在引用已知可在 .NET Core 上运行但未正式支持它的包时需要设置 PackageTargetFallback
- 例如PCL 库或为遗留 dotnet
框架名字构建的库。
因此,项目(.csproj
、.fsproj
、...)将包含类似于以下内容的行:
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
在大多数情况下,可以简单地删除此行并且应该构建项目,因为 .NET Core 2.0 已经将 AssetTargetFallback
定义为 net461
-这意味着无需额外配置即可使用与 .NET Framework 4.6.1 或更高版本兼容的任何 NuGet 包。
如果这会引入更多构建/恢复错误,请将行更改为:
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
更改的原因是 PackageTargetFallback
被认为已弃用,应替换为 AssetTargetFallback
,后者的行为略有不同。
工具中的重大变化是 netcoreapp2.0
和 netstandard2.0
自动设置 AssetTargetFallback
,这与项目文件中定义的任何 PackageTargetFallback
值冲突。
升级正在编译的项目并且在 .NET Core 1.0 或 1.1 上 运行 正常时,将目标框架更新为 .NET Core 2.0 (netcoreapp2.0
) 会导致构建失败并显示以下错误:
error NU1003: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.
这个错误的原因是什么,如何解决才能重新构建项目?
在 .NET Core 1.0 和 1.1 中,在引用已知可在 .NET Core 上运行但未正式支持它的包时需要设置 PackageTargetFallback
- 例如PCL 库或为遗留 dotnet
框架名字构建的库。
因此,项目(.csproj
、.fsproj
、...)将包含类似于以下内容的行:
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
在大多数情况下,可以简单地删除此行并且应该构建项目,因为 .NET Core 2.0 已经将 AssetTargetFallback
定义为 net461
-这意味着无需额外配置即可使用与 .NET Framework 4.6.1 或更高版本兼容的任何 NuGet 包。
如果这会引入更多构建/恢复错误,请将行更改为:
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
更改的原因是 PackageTargetFallback
被认为已弃用,应替换为 AssetTargetFallback
,后者的行为略有不同。
工具中的重大变化是 netcoreapp2.0
和 netstandard2.0
自动设置 AssetTargetFallback
,这与项目文件中定义的任何 PackageTargetFallback
值冲突。