使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'恢复

时间:2019-02-21 22:57:51

标签: .net .net-core nuget .net-standard

我正在尝试引用一个明显为.NetStandard2.0的nuget程序包。我们拥有此程序包的源代码,并将其编写为目标.netstandard。我们确实有一个CI管道,因此当我们推送此代码时,它将构建并释放nuget包。当我尝试将生成的nuget包引用到当前的.netCore应用程序中时,出现以下错误:

was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'. This package may not be fully compatible with your project.

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

  • 直接将源代码引用为对我的项目的项目引用。哪个工作正常。
  • 分析dotpeek中生成的nuget软件包,以确保它实际上是.netstandard软件包。

不确定是什么使它认为它随时都在瞄准。下面是我的.csproj配置的样子

<TargetFramework>netstandard2.0</TargetFramework>

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

4 个答案:

答案 0 :(得分:1)

您必须使用项目中与.NETCoreApp,Version = v2.0兼容的所有软件包。

错误消息中的“是”之前应该有一些软件包名称。例如:

Package 'Microsoft.AspNet.WebApi.Client 5.2.2' was restored
Package 'EntityFramework 6.2.0' was restored 

答案 1 :(得分:0)

我遇到了一个类似的问题,即我通过Azure Artifacts发布了自己的NetStandard2.0程序包,然后尝试在netcore应用程序中使用它。

事实证明,问题在于我将我的软件包命名为与现有NuGet软件包相同的名称。我的Azure Artifacts nuget提要在Visual Studio中已正确配置,但是当它尝试安装包时,它会首先尝试默认的NuGet提要,然后选择另一个(恰好是NetFramework)而不是我的。

一旦我将包重命名为唯一的(我刚刚添加了自己的名称空间)并重新发布,一切都可以正常工作。

我想这可能不是每个人的问题,而是我自己。

答案 2 :(得分:0)

我也遇到了这个问题。就我而言,将DLL打包并放置在lib/文件夹中时,就会发生导入警告。通过将打包的DLL放在lib/netstandard2.0文件夹中即可解决。

答案 3 :(得分:0)

我有同样的问题。要解决此问题

  1. 在VS2019中的依赖项/包下查找。
  2. 然后寻找旁边带有警告标志的包装。
  3. 转到Windows配置文件目录并删除.nuget下的相应文件夹
  4. 删除依赖项/包下的引用
  5. 通过“管理Nuget软件包”添加Nuget软件包以获取解决方案