首页 > 解决方案 > C++ 项目中 NuGet 包的 PackageReference

问题描述

我是一个项目的一部分,我们在 Visual Studioe 中为 NuGet 包使用 packages.config 文件,然后通过Import项目文件中的语句包含每个包依赖项。

如果您总是想要这些包,这很好用,但是如果开发人员不需要/不想要它,我们希望排除一些有条件的包。我找到了PackageReference 标记,这将使依赖项更加清晰,并让我们有条件地包含包。

C# 项目似乎完全支持它,但我不知道它是否支持 C++ 项目。

我已经尝试删除我们所有的 packages.config 文件并用标签替换所有引用PackageReference,但 PackageReference 标签似乎没有被包管理器拾取。我已经完成了所有我可以为 Visual Studio 找到的“迁移工具”,但没有运气。

是否可以将它用于 C++ 项目?如果没有,是否有一种解决方法可以让我有条件地排除某些包?

我正在使用 Visual Studio Professional 15.6.7。

标签: visual-studio-2017nuget

解决方案


是否可以将它用于 C++ 项目?

目前,PackageReference尚不支持C++ 项目。NuGet 团队正在评估它以支持未来的版本。您可能已经通过一些 hack 使其工作,但如果您创建一个新的 c++ 项目并尝试将此包安装为PackageReference,它将不允许您这样做。因此,我建议您继续为您的 c++ 项目和库使用 packages.config。

此外,您可以在 Visual Studio UserVoice 网站上添加您的请求或对此功能投票:在 vcxproj 中使用 PackageReference。当有足够多的社区对此反馈进行投票并添加评论时,产品团队成员将认真对待此反馈。

如果没有,是否有一种解决方法可以让我有条件地排除某些包?

您可以在自定义目标文件中包含条件引用,并将 dll 部署在tools包的文件夹中,这样 Nuget 就不会自动将它们添加为引用。

认证NuGet 更新和条件引用

希望这可以帮助。


推荐阅读