visual-studio-2017 - 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。
解决方案
是否可以将它用于 C++ 项目?
目前,PackageReference
尚不支持C++ 项目。NuGet 团队正在评估它以支持未来的版本。您可能已经通过一些 hack 使其工作,但如果您创建一个新的 c++ 项目并尝试将此包安装为PackageReference
,它将不允许您这样做。因此,我建议您继续为您的 c++ 项目和库使用 packages.config。
此外,您可以在 Visual Studio UserVoice 网站上添加您的请求或对此功能投票:在 vcxproj 中使用 PackageReference。当有足够多的社区对此反馈进行投票并添加评论时,产品团队成员将认真对待此反馈。
如果没有,是否有一种解决方法可以让我有条件地排除某些包?
您可以在自定义目标文件中包含条件引用,并将 dll 部署在tools
包的文件夹中,这样 Nuget 就不会自动将它们添加为引用。
希望这可以帮助。
推荐阅读
- r - glm函数使RStudio崩溃
- c - 使用 C 将 'Sat, 2018 年 11 月 24 日 00:34:57 GMT' 转换为毫秒
- r - 不同的结果应用 geom_tile 而不是 heatmap
- php - SQLSTATE [23000]:完整性约束违规:1052 使用 laravel 连接
- bash - 使用 sed 检查和替换字母数字模式
- excel - Excel - 从基于非唯一条件的范围内返回多个唯一查询,即相似排名
- python - NLP ML 如何知道文本分类器中使用的词的权重?
- c# - 内联初始化多个实例#
- php - PHP中的目录列表
- angular - *ngIf 为 false 时组件不会被销毁