vcpkg 包管理器可以作为 Visual Studio (2022) 的一部分进行安装,并且应该可以通过 Visual Studio 2022 开发人员命令提示符执行,下图证明了这一点。但是,当我尝试使用 vcpkg 安装包时,我遇到了一条错误消息。出了什么问题?
我尝试以普通用户或管理员身份运行开发人员命令提示符。没有区别。本主题:https://github.com/microsoft/vcpkg/issues/32641,提到通过重新启动 CLI 解决了某些用户的问题。但这对我来说不起作用。github 问题还提到该问题已在https://github.com/microsoft/vcpkg/pull/36141。但是,这似乎并不影响通过 Visual Studio 安装程序安装的 vcpkg。
如何在仍然使用 Visual Studio 安装的 vcpkg 实例的同时解决此问题?
谢谢!
答案1
似乎我需要导航到我的 Visual Studio 项目的文件夹,然后在 VS 2022 的开发人员命令提示符中输入以下内容:
vcpkg new --application
这将生成一个vcpkg.json
和一个vcpkg-configuration.json
文件。我可以在文件中手动添加我需要的依赖项vcpkg.json
,然后键入以下内容来安装它们:
vcpkg install
这是我遵循的一个很好的教程:
https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-cmd
答案2
这个问题似乎在错误报告中讨论过 从 cmd.exe 内部运行 vcpkg,使得 vcvarsall.bat 运行,安装嵌入到 VS 副本的 doskey 宏 #32641。
开发人员 BillyONeal 在 2024 年 1 月发布的帖子中的最后一条消息是:
好的,应该修复#36141。 再次感谢!
因此看来最新版本(或下一个版本之一)应该已经修复了这个问题。
BillyONeal 在之前的消息中详细描述了他对这个问题的分析,包括在他的修复程序发布之前可以采用的解决方法:
我想我知道现在发生了什么。
vcpkg install
希望得到一个编译器来使用。为了弄清楚,它运行vcvarsall.bat
vcvarsall.bat
嵌入了“Visual Studio 附带”的 vcpkg 副本,该副本安装了一个doskey
宏,以便启用以下工件场景:vcpkg use
- 出乎意料的是,doskey 宏被父进程“继承”了,因此它泄漏到了
vcpkg install
解决方法如下:
doskey vcpkg=
执行此操作后删除宏- 绕过 doskey 宏,方法
vcpkg.exe
是:vcpkg
我从来没有注意到这一点,因为我的所有 shell 都以 pwsh 和 Windows Terminal 开头,显然该组合中的某些东西导致这种继承无法发生。