如何解决Visual Studio 项目属性中缺少项目 vcpkg 设置
我的一个 vcxproj(带有 vcpkg.json)看起来像这样
另一个(带有 vcpkg.json)看起来像这样。请注意缺少的选项。
但是我需要能够启用 vcpkg Manifest 以便它可以编译!我被卡住了,这个选项去哪里了?两个项目都在相同的解决方案中。两者都将 vcpkg.json 添加到它们的源文件中。值得注意的是,有一个不同的目录结构(proj/proj.vcproj vs proj/build/proj.vcproj)所以 vcpkg.json 离得更远
作为设计说明,有条件隐藏选项或灰色选项是一种反模式。
解决方法
只有 vcpkg.json 是不够的。需要在 proj.vcproj 文件中启用 vcpkg。
尝试以下步骤:
- 关闭解决方案
- 在普通编辑器中打开 proj.vcproj 文件
- 在其中查找 VcpkgEnableManifest 和其他 vcpkg 属性。 更好的是,使用 WinDiff 或类似的 DIFF 工具来发现 vcproj 文件之间的差异。
我不能说得更具体了,因为您首先没有说明如何将 vcpkg 选项导入/集成到您的项目中。有很多不同的方法可以做到这一点。
例如,我使用 vcpkg export --nuget 命令导出一个 nuget 包,然后我使用 Visual Studio nuget 包管理器将其添加到我的各个项目中。这将从 nuget 包目录中导入“vcpkg.props”。此导入命令添加了您缺少的选项。如果您使用相同的方法,您可能忘记将 nuget 包添加到您的其他项目中。这种集成 vcpkg 的方式是“按项目”而不是全局的,因此两个项目是否在同一个解决方案中都没有关系。
如果 otoh 您使用 vcpkg 集成命令全局集成 vcpkg,情况会有所不同。在这种情况下,导入命令将位于某些 Microsoft.props 文件中,并且选项应出现在所有项目中。
,好的,我找到了解决方法。通过在 VS 打开和运行 vcpkg integrate project/install
命令时卸载和加载 VS 项目,我使自己处于损坏状态。
我误解了这些命令。我以为 vcpkg integrate project
只为那个项目安装了 MSBuild vcpkg,所以我想我必须为每个 .vcprojx 运行它。
相反,vcpkg integrate project
可能更适合命名为 vcpkg integrate nuget
,而 vcpkg integrate install
可以命名为 vcpkg integrate msbuild
?
无论如何,修复方法是关闭 Visual Studio 的所有实例(我什至卸载了额外的版本),然后只运行 vcpkg integrate install
一次,然后重新打开 Visual Studio。然后它起作用了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。