本机 Nuget 包安装在 VS 中,但没有为C++(本机)项目添加引用

Native Nuget Package Installs in VS But No Reference Added For C++ (Native) Projects

本文关键字:本机 C++ 引用 添加 项目 包安装 Nuget 安装 VS      更新时间:2023-10-16

我刚刚创建了一个本机Nuget包(C/C++(,并尝试在Visual Studio中的另一个本机包中使用它。从Nuget包管理器中,我能够看到nuget已安装,并且在package.config中我能够看到它。但在项目引用下,它仍然没有被引用。如何添加对本机 Nuget 的引用?

我已经尝试根据 nuget 版本更新 package.config,但这没有帮助。

这是非常不幸的,但原生的Nugets已经成为过去。Microsoft正在开发的VSPkg仍在进行中,可能会 在 2020 年左右发布。CoApp 提供了一种创建本机 C、C++ Nuget 的默认方法,但随之而来的是很多问题。CoApp项目结束 处于测试阶段,因此您获得的支持很少,并且仅来自聊天论坛或 IRC。

尽管CoApp确实是创建本机库/nuget的好工具,但默认情况下,Nuget 包管理器会为本机 nuget 带来很多问题。第一个 最重要的是参考。 默认情况下,Nuget 使用包管理器来解决此问题,但如果本机项目中的本机 nuget,则无法选择。ProjectReferences仍然是一回事 将来C++项目,您仍然必须使用 package.config 来声明版本控制和引用。

包管理器/CoApp 创建带有"/Native"标记的本机包,也没有任何版本控制。因此,如果没有任何版本控制,就无法在本机项目中引用 nuget。 使用本机 Nuget 的唯一方法是在.Net Core应用程序中、Xamarin中或C#提供上述功能的多目标项目中。非常不幸的是,C/C++ nuget 不能在 VS 中的 C/C++ 项目中使用。

无法通过Visual Studio直接将本机(C/C++(构建的nuget添加到本机(C/C++(项目中。好在 至少不是默认的。 合并它的唯一方法是在运行时加载 Dll(而不是 nuget(。这似乎是唯一的方法。 好吧,无论如何,没有必要向C++项目添加C++nuget。最好添加对 DLL 的引用。 以防万一您不想这样做,您可以采用其他选项在运行时加载 DLL。 这里做了一件非常相似的事情: https://github.com/aspnet/KestrelHttpServer/blob/e4b9bd265c75704529409638fd9cdfac504a93ef/src/Microsoft.AspNet.Server.Kestrel/KestrelEngine.cs#L26