【发布时间】: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