使用“.NETFramework, Version = v4.6.1”而不是项目目标框架来恢复。

30

我试图引用一个NuGet包,它明显是.NetStandard2.0。我们拥有这个包的源代码并将其编写为针对.netstandard的目标。我们确实有一个CI管道,所以当我们推送这个代码时,它会构建并发布NuGet包。但是,当我尝试将生成的NuGet包引用到我的当前的.netCore应用程序中时,出现以下错误:

使用“.NETFramework,Version=v4.6.1”来恢复,而不是项目的目标框架“.NETCoreApp,Version=v2.1”。此软件包可能与您的项目不完全兼容。

对我来说这毫无意义。到目前为止,我已经尝试了以下调试步骤:

  • 将源代码直接作为项目引用引用到我的项目中。这可以很好地工作。
  • dotpeek中分析生成的NuGet包,以确保它实际上是一个.netstandard包,事实也确实如此。

不确定什么使它认为它曾经定位过。下面是我的.csproj配置的样子

<TargetFramework>netstandard2.0</TargetFramework>

不确定是否还有其他配置块在这里起作用,但如果需要更多信息,请告诉我。有什么想法吗?


2
嗨@Lost,你最终解决了这个问题吗?我也遇到了同样的问题... - cedd
@cedd 不好意思,我不记得了,但你试过TomP在下面提到的方法了吗?确保你的包名实际上是唯一的?有时它会在解析你的包之前从中央NuGet feed解析一个包。 - Lost
谢谢@lost,我已经检查过了,但是很遗憾它已经是唯一的了。我目前正在使用带有.nuspec文件的dotnet pack,所以我将尝试改用.csproj文件来看看是否有所帮助。 - cedd
4个回答

6
我也遇到了这个问题。在我的情况下,当 DLL 打包并放置在 lib/ 文件夹中时,导入警告就会出现。将打包的 DLL 放置在 lib/netstandard2.0 文件夹中后,问题得以解决。

我想确认当我将我的软件包从.NET 4.6升级到.NET Standard 2.0时,这解决了我的问题! - LlamaNL
我确认这也解决了我的问题。我构建并发布了一个 .net6.0 的 NuGet 包。 - Naweap

4
我遇到了类似的问题,我在Azure Artifacts上发布了自己的NetStandard2.0包,并试图在netcore应用程序中使用它。
结果发现问题出在我给我的包命名与现有的NuGet包相同。虽然我已经在Visual Studio中正确配置了我的Azure Artifacts Nuget源,但当它尝试安装该包时,它首先尝试默认的NuGet源并选择了其他的(这恰好是仅适用于NetFramework的包),而不是我的包。
我将我的包重命名为唯一的名称(只是添加了自己的命名空间)并重新发布后,一切正常运行。
我猜这可能不是每个人都会遇到的问题,但对我来说确实是这样。

3
你需要在你的项目中使用与.NETCoreApp兼容的每个包,版本为v2.0。
你的错误信息中应该有一些包名出现在“was”之前。例如:
Package 'Microsoft.AspNet.WebApi.Client 5.2.2' was restored
Package 'EntityFramework 6.2.0' was restored 

该软件包是为 .NetStandard 2.0 版本制作的。我们拥有代码,并已针对 NetStandard2.0 进行构建。 - Lost

2

我曾经也遇到过同样的问题。要解决这个问题,您需要:

  1. 在VS2019中找到依赖项/包。
  2. 然后查找带有警告标志的软件包。
  3. 前往您的Windows个人资料目录,并删除.nuget下对应的文件夹。
  4. 在依赖项/包下删除引用。
  5. 通过“管理解决方案的Nuget包”添加Nuget包。

1
无法工作。我正在使用 Microsoft.Exchange.WebServices 和 Managed.API。两者都有相同的问题。 - user1810535
这对我也不起作用。 - Claus Appel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接