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

Los*_*ost 17 .net nuget .net-core .net-standard

我正在尝试引用一个 nuget 包,它显然是.NetStandard2.0. 我们拥有此包的源代码并将其写入目标 .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.

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

  • 直接引用源代码作为我项目的项目引用。哪个工作得很好。
  • 分析生成的 nuget 包dotpeek以确保它实际上是一个 .netstandard 包。

不知道是什么让它认为它在任何时候都是针对的。下面是我的 .csproj 配置的样子

<TargetFramework>netstandard2.0</TargetFramework>

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

小智 6

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


小智 5

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

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

一旦我将我的包重命名为唯一(我刚刚添加了我自己的命名空间)并重新发布,它就一切正常。

我想这可能不是每个人的问题,但对我来说是这样。


cde*_*dev 3

您必须在项目中使用与 .NETCoreApp,Version=v2.0 兼容的每个包。

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

Package 'Microsoft.AspNet.WebApi.Client 5.2.2' was restored
Package 'EntityFramework 6.2.0' was restored 
Run Code Online (Sandbox Code Playgroud)