【问题标题】:Nuget restore fails (NU1201) for .NET Standard referencing .NET Framework.NET Standard 引用 .NET Framework 的 Nuget 还原失败 (NU1201)
【发布时间】:2021-05-08 17:07:41
【问题描述】:

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

我的项目包含两个库:

LibA - .NET 标准 2.0

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

我从 LibA 中引用(通过 Project ref)LibB(即我的目标是使用 LibA 中的 LibB)。 如果 LibB 使用 packages.config 文件,一切正常,但是一旦我转向 LibB csproj 中的包引用,nuget 恢复就会失败。它给了NU1201,说的是

Project LibB is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). Project LibB supports: net47 (.NETFramework,Version=v4.7)

是否有任何已知的解决方法,或者这是一个 VS 错误,或者它只是按设计工作(我听说 packages.config 方式在恢复期间跳过了兼容性检查)。

【问题讨论】:

  • 错误信息表明 LibA 正在引用不受支持的 LibB。 .NET Standard 2.0 项目不能引用 .NET Framework 项目。由于兼容模式,.NET Standard 2.0 项目可以引用仅支持 .NET Framework 的 NuGet 包或库程序集(不是项目)。
  • 此外,.NET Standard 2.0 项目似乎应该可以引用 .NET Framework 4.6.1 项目但没有高于 4.6.1 的版本 - github.com/dotnet/sdk/issues/1755
  • @MattWard 为什么你说我不能这样引用?允许和支持youtube.com/watch?v=vg6nR7hS2lI&feature=youtu.be&t=173 将目标从 4.7 更改为 4.6.1(以及更早的版本)没有任何区别。这只是 packages.config 与包引用的问题
  • @MattWard 所以你说我不应该通过项目引用来引用框架库?为什么它被IDE允许,有什么区别?只要我使用 packages.config 我的项目运行得非常好。
  • 我在使用 Visual Studio 2017 时得到了与您相同的行为。我会将其归档到 github.com/nuget/home/issues 上,看看 NuGet 团队是怎么说的。同时,如果您有自己的 .NET Standard 2.0 项目,它可以安装仅针对 .NET Framework 的 NuGet 包,您会收到关于此的警告。

标签: visual-studio-2017 nuget .net-standard


【解决方案1】:

.NET Standard 引用 .NET Framework 的 Nuget 还原失败 (NU1201)

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

https://github.com/NuGet/Home/issues/5461

https://github.com/dotnet/sdk/issues/1755

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

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

希望这会有所帮助。

【讨论】:

  • 好的,不确定“按设计工作”是否最适合发生的情况 :) 但我看到在最近的功能中这种行为不会改变。谢谢
猜你喜欢
  • 2018-09-27
  • 2023-02-01
  • 2021-02-23
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 2018-06-21
相关资源
最近更新 更多