Visual studio 2017 对于引用.NET Framework的.NET标准,Nuget还原失败(NU1201)

Visual studio 2017 对于引用.NET Framework的.NET标准,Nuget还原失败(NU1201),visual-studio-2017,nuget,.net-standard,Visual Studio 2017,Nuget,.net Standard,我在谷歌上搜索了一段时间,但没有找到正确的答案 我的项目包含两个库: LibA-.NET标准2.0 LibB-.NETFramework 4.7,其中包含一些nuget包 我正在引用(通过projectref)LibA中的LibB(即,我的目标是使用LibA中的LibB)。 如果LibB使用packages.config文件,一切都会正常工作,但一旦我转到LibB csproj中的包引用,nuget restore就会失败。它给出了NU1201,表示 Project LibB is not co

我在谷歌上搜索了一段时间,但没有找到正确的答案

我的项目包含两个库:

LibA-.NET标准2.0

LibB-.NETFramework 4.7,其中包含一些nuget包

我正在引用(通过projectref)LibA中的LibB(即,我的目标是使用LibA中的LibB)。 如果LibB使用packages.config文件,一切都会正常工作,但一旦我转到LibB csproj中的包引用,nuget restore就会失败。它给出了NU1201,表示

Project LibB is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). Project LibB supports: net47 (.NETFramework,Version=v4.7)
是否有任何已知的解决方法,或者这是一个VS错误,或者它只是按照设计工作(我听说packages.config在恢复过程中跳过了兼容性检查)

对于引用.NET Framework的.NET标准,Nuget还原失败(NU1201)

是的,它只是按设计工作。在.net framework中使用新的基于SDK的项目类型或PackageReference时,NuGet restore存在问题

当我们使用
packages.config
项目或非基于SDK的项目类型时,NuGet在恢复期间不会检查兼容性

因此,要解决此问题,请确保引用的项目是旧式csproj或使用
packages.config


希望这有帮助。

错误消息表明LibA正在引用不受支持的LibB。.NET标准2.0项目不能引用.NET Framework项目。.NET标准2.0项目可以引用仅支持.NET Framework的NuGet包或库程序集(不是项目)由于兼容模式。另外,.NET标准2.0项目似乎可以引用.NET Framework 4.6.1项目,但没有高于4.6.1的版本-@MattWard为什么你说我不能这样引用?允许并支持将目标从4.7更改为4.6.1(以及更改为早期版本)不会产生任何差异。这只是packages.config与packages之间的问题references@MattWard所以你说我不应该通过项目引用引用框架库?那么为什么IDE允许它,有什么区别呢?只要我使用packages.config,我的项目就运行得很好。我在Visual Studio 2017中的表现与您相同。我会将此文件提交到github.com/nuget/home/issues上,看看nuget团队会怎么说。同时,如果你有一个.NET标准2.0项目,它可以安装一个只针对.NET Framework的NuGet软件包,你会得到一个警告。好的,不确定“按设计工作”是否最适合所发生的情况:)但是我发现在最近的功能中不会有这种行为的改变。谢谢