c++ - MSBuild 在构建时将 nuget 包应用于项目

标签 c++ visual-studio cmake msbuild

我有一个在 Linux 上构建良好的 cmake 项目,我也想在 Windows 上构建它。该代码是可移植的,由 C++ 构成,所以……它应该构建。唯一的问题是,在 Windows 上,我需要使用 nuget 来恢复一些包,cpprestsdk 就是其中之一。现在当我跑的时候

cmake . 

CMake 将生成我根本不想包含在我的 VCS 中的解决方案文件和项目文件。我想让 MSBuild 做的事情是将我的 packages.config 中包含的包应用到项目目录中找到的所有项目文件。 谁知道怎么做?

最佳答案

The thing I want MSBuild to do is to apply the packages contained in my packages.config to all the project files found in the project directory. Anyone knows how?

恐怕你不能做这样的事情。那是因为无论您是使用 MSBuild 还是 NuGet 来做这件事,您都必须使用 nuget.exe 来做它。但是,将 nuget 包安装到项目文件依赖于 VS 功能 而不是 nuget.exe 并且 nuget 团队不打算将其带到 exe。

NuGet 命令行实际上并不安装任何包。安装命令实际上是在做恢复操作。

这意味着 nuget.exe 安装只会下载包并将其解压缩到输出位置。它不会修改项目文件。虽然,包管理器控制台似乎提供了“Install-Package”来执行此操作,但您必须使用 Visual Studio 打开每个项目文件并执行 Install-Package每个项目文件的包管理器控制台,这不是您想要的。因此,您无法在 visual studio 之外启用此脚本。

因此我们无法使用 MSBuild 将 packages.config 中包含的包应用到项目目录中找到的所有项目文件。

可以引用this threadthis thread了解详情。

希望这对您有所帮助。

关于c++ - MSBuild 在构建时将 nuget 包应用于项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48618589/

相关文章:

visual-studio - 带有自定义静态代码分析器的 Visual Studio Db 项目

visual-studio - 在 Visual Studio 中使用 Qt 设计器?

c++ - 使用 cmake 和 visual studio 的一个解决方案中的多个项目

简单算术的 C++ 和 Octave 结果不同

c++ - 堆栈相关链表中的问题

c++ - 类与结构与enable_shared_from_this

c++ - 有没有插入然后排序的替代方法

visual-studio - Visual Studio,如何让文件显示在列表框 Powershell 中

windows - FindBoost.cmake : Use different Compiler-version (vc90 instead of vc100)

c++ - 使用 CMake 链接库的调试版本