C ++项目中NuGet软件包的PackageReference

ebb*_*bbs 5 nuget visual-studio-2017

我是一个项目的一部分,我们在Visual Studioe中将package.config文件用于NuGet软件包,然后通过该Import项目文件中的语句包括每个软件包依赖项。

如果您始终需要这些程序包,则此方法很好用,但是如果开发人员不需要/想要这些程序包,我们希望将其排除。我找到了PackageReference标记,它将使依赖关系更加整洁,并让我们有条件地包括这些包。

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

我尝试删除所有的packages.config文件,并用PackageReference标记替换所有引用,但是PackageManager似乎没有拾取PackageReference标记。我也经历了所有可以在Visual Studio中找到的“迁移工具”,但是没有运气。

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

我正在使用Visual Studio Professional 15.6.7。

Leo*_*SFT 6

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

在这一刻,PackageReference不是还支持C ++项目。NuGet团队正在对其进行评估,以支持将来的版本。您可能已经通过一些技巧使其工作了,但是如果您创建一个新的c ++项目并尝试将该软件包安装为PackageReference,则将不允许您这样做。因此,我建议您继续对c ++项目和库使用packages.config。

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

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

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

已认证NuGet更新和有条件的参考

希望这可以帮助。

  • [开发社区提案的链接](https://developercommunity.visualstudio.com/idea/351636/use-packagereference-in-vcxproj.html) 代替 uservoice 。 (2认同)