使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“GuerrillaSharp 1.0.0”
Posted
技术标签:
【中文标题】使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“GuerrillaSharp 1.0.0”【英文标题】:Package 'GuerrillaSharp 1.0.0' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework 【发布时间】:2019-10-22 03:16:28 【问题描述】:我试图了解为什么会出现警告。
步骤
-
打开 Visual Studio 2019
创建新的 .NET Core 类库。这是使用目标框架 .NET Core 2.1 创建的。
添加nuget包GuerrillaSharp
构建项目
预期结果
没有问题或警告。
实际结果
警告 NU1701 使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.1”恢复包“GuerrillaSharp 1.0.0”。此软件包可能与您的项目不完全兼容。
我检查了什么
我在 Google/Stack Overflow 上发现了类似的问题,但看不到这如何解释这种 nuget 包的情况。在许多其他帖子中,解决方案通常是安装更新版本的 nuget 包。
GuerillaSharp 依赖项:
Newtonsoft.Json (>= 11.0.2),支持 .NET Standard 1.0、1.3 和 2.0。 所以据我了解,这应该与 .NET Core 2.1 兼容。【问题讨论】:
【参考方案1】:GuerillaSharp 只有 net461 二进制文件。有很多方法可以检查,但一种方法是view the package on fuget.org。 net461 不是“直接”与 netcoreapp2.1 兼容,但由于很多包作者没有更新他们的包以支持 netstandard,NuGet 和 .NET SDK 团队添加了资产目标回退,基本上说“嗯,net461 API 接近于 netstandard ,所以让我们假装它是兼容的,即使它可能不兼容”。这就是你收到警告的原因。它可能有效,但如果 GuerillaSharp 使用任何仅限 .NET Framework 的 API,它会在运行时崩溃。
【讨论】:
感谢 fuget.org 的提示!所以如果我理解正确的话,这不是你可以在 nuget.org 上看到的,对吧? 当包作者创建包含组的依赖项部分并在这些组中指定其支持的 TFM 时,nuget.org 将在依赖项部分下显示它。但目前如果包作者没有将 TFM 信息作为依赖组提供,那么不会。围绕目标框架有一些常见的请求(不仅显示,还有搜索),并且有改善体验的计划,但它还没有达到工程师工作的最高优先级。但是,我们有一名实习生正在研究最终对该功能有用的东西。 谢谢,我在 GuerrillaSharp repo github.com/NostraThomas99/GuerrillaSharp/issues/2 中记录了一个问题以上是关于使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“GuerrillaSharp 1.0.0”的主要内容,如果未能解决你的问题,请参考以下文章
使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“GuerrillaSharp 1.0.0”
未找到框架“.NETFramework,Version=v4.7.1”的参考程序集
1.关于使用vscode+unity时出现.NETFramework,Version=v4.7.1 were not found 的解决方法
使用“.NetFramework Version= v4.6.1”恢复了包“MimeSharp 1.0.0”
为啥Visual Studio会在temp文件夹下生成如下文件.NETFramework,Version=v4.5.AssemblyAttributes.cs