2017-08-08 93 views
35

当升级在.NET Core 1.0或1.1上编译并运行良好的项目时,将目标框架更新为.NET Core 2.0(netcoreapp2.0)会导致构建失败,出现以下错误:升级到.NET Core 2.0:PackageTargetFallback和AssetTargetFallback不能一起使用

error NU1003: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment. 

,这是什么错误的原因,以及如何解套再次使该项目建设?

回答

62

在.NET Core 1.0和1.1中,当引用已知可在.NET Core上工作但尚未正式支持的软件包时,需要设置PackageTargetFallback。为传统dotnet框架名字对象构建的PCL库或库。

由于这个原因,该项目(.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.0netstandard2.0自动设置为AssetTargetFallback,与项目文件中定义的任何PackageTargetFallback值冲突。

+7

谢谢,我在编辑器中打开了csproj,完全按照您的建议删除了元素,它工作得很好。 – amassani

相关问题