【问题标题】:MSBuild to apply a nuget package to a project at build timeMSBuild 在构建时将 nuget 包应用于项目
【发布时间】:2024-01-19 09:03:01
【问题描述】:

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

cmake . 

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

【问题讨论】:

  • 看到使用 vcpkg 我可以安装 cpprestsdk。但是...我想看看我的问题是否有答案。

标签: c++ visual-studio cmake msbuild


【解决方案1】:

我希望 MSBuild 做的是将我的 packages.config 中包含的包应用到项目目录中的所有项目文件。有人知道怎么做吗?

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

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

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

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

详情可以参考this threadthis thread

希望这会有所帮助。

【讨论】: