C# 本机NuGet包安装失败

C# 本机NuGet包安装失败,c#,c++,visual-studio-2017,nuget,C#,C++,Visual Studio 2017,Nuget,我创建了两个NuGet包:一个本机(C++)NuGet包和一个依赖于前一个的常规.NET NuGet包;并将两者都部署到内部NuGet回购中。 然后我创建了一个test.NET项目,并成功安装了lead.NET包,而PM也安装了本机包。 接下来,我尝试将.NET包安装到实际的consumer.NET项目中,安装失败,出现错误消息: 无法安装程序包“本机1.0.0”。您正试图将此程序包安装到一个以“.NETFramework,Version=v4.7.1”为目标的项目中,但该程序包不包含任何与该框

我创建了两个NuGet包:一个本机(C++)NuGet包和一个依赖于前一个的常规.NET NuGet包;并将两者都部署到内部NuGet回购中。
然后我创建了一个test.NET项目,并成功安装了lead.NET包,而PM也安装了本机包。

接下来,我尝试将.NET包安装到实际的consumer.NET项目中,安装失败,出现错误消息:

无法安装程序包“本机1.0.0”。您正试图将此程序包安装到一个以“.NETFramework,Version=v4.7.1”为目标的项目中,但该程序包不包含任何与该框架兼容的程序集引用或内容文件

这两个项目(test/successful和product/unccessful)实际上都以.NETV4.7.1为目标,都以AnyCPU为目标,并且都使用相同的工具集


调试
任意CPU
Exe
v4.7.1
我不明白为什么安装我的软件包会在产品项目中产生上述错误。

提前感谢大家的帮助

然后我创建了一个测试.NET项目并成功安装了lead .NET包,而PM也安装本机包

接下来,我尝试将.NET包安装到实际的消费者.NET中 项目,安装失败,并显示错误消息:

这类messgae有很多解决方法,包中不包含任何与该框架兼容的程序集引用或内容文件。对于您的具体问题,由于一个成功,另一个没有:

  • 我建议先清理nuget缓存,然后再进行其他检查。因为当您安装或恢复nuget pakcages时,它将首先尝试在缓存中查找它。类似问题见

  • 然后确保同一解决方案中的所有项目使用相同的方法来管理nuget包。(所有PackageReference或所有packages.config)。对于VS217及更高版本,建议使用packageReference:)类似问题请参阅


  • 嗨,朋友,如果你在两个项目中使用不同的方式来使用nuget包,那么清理nuget包的结果是什么。请确保两个项目都是
    PackageReference format
    ,然后按UI使用所有包。我认为在这之后,结果可能是相同的,全部安装成功或全部失败。然后,如果它失败了,共享更多的细节。你说两个项目都是.NET 4.7.2,所以我假设C++项目仍然是.NET,而不是一个需要从其他.NET库调用/调用的本地Win32 DLL。当您将nupkg作为zip文件打开时,DLL是否在
    lib/net472
    文件夹中?@zivkan当我说这两个项目都以.NET v4.7.1为目标时,我指的是两个消费项目:第一个-测试/成功,第二个-产品/失败。本机项目是一个纯C++项目,不针对.NET。在这种情况下,本机包不能以.NET程序集打包的方式打包,这几乎可以肯定您为什么会得到错误。如果您只想支持SDK风格的项目(由,.NET Core使用,但不限于此),请查看
    libuv
    包的布局。否则,要支持所有使用(.NET)的项目类型,您需要提供自己的道具和目标文件。例如,看看
    System.Data.SQLite.Core
    包是如何实现的。@LanceLi MSFT就是这样