在输入
.\vcpkg integrate project
之后,出现如下
A suitable version of nuget was not found (required v6.10.0) Downloading portable nuget 6.10.0...
Downloading nuget...
https://dist.nuget.org/win-x86-commandline/v6.10.0/nuget.exe->D:\vcpkg\downloads\71d7307b-nuget.exe
Downloading https://dist.nuget.org/win-x86-commandline/v6.10.0/nuget.exe
error: nuget (D:\vcpkg\downloads\tools\nuget-6.10.0-windows\nuget.exe) produced unexpected output when attempting to determine the version:
NuGet 版本: 6.10.0.107
用法: NuGet <command> [参数] [选项]
键入“NuGet 帮助 <command>”,以获取有关特定命令的帮助。
问题出现原因分析:新版的vcpkg.exe中通过nuget.exe的输出来获取nuget版本号,但nuget输出含中文,vcpkg.exe默认是以英文来读取
在官方修改代码之前,可以先试着手动修改源码来暂用着先
步骤如下:
1.下载vcpkg源码,
GitHub - microsoft/vcpkg-tool: Components of microsoft/vcpkg's binary.
2.解压后用vs打开文件夹,
修改代码为
注意,一定要注意编码格式,一开始跟着别人的方案修改了一天没有成功,因为编码问题,如果在vs里修改不成功,可以用vscode打开tools.cpp在里面进行修改
(当时用vs改肉眼看上去跟命令行里的一摸一样,用vscode打开.cpp文件会发现此处中文是乱码,随之在vscode中修改)
//return extract_prefixed_nonwhitespace("NuGet Version: ", Tools::NUGET, std::move(output), exe_path);
return extract_prefixed_nonwhitespace("NuGet 版本: ", Tools::NUGET, std::move(output), exe_path);
修改后右键cmakelist.txt ->配置vcpkg ->生成
此时会生成咱手改的vcpkg.exe,把这个vcpk.exe拷贝到原本的vcpkg安装文件夹中进行替换
替换后再次命令行执行
PS D:\vcpkg> .\vcpkg integrate project
Created nupkg: D:\vcpkg\vcpkg.D.vcpkg.1.0.0.nupkg
With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
Install-Package "vcpkg.D.vcpkg" -Source "D:\vcpkg"
此时修复成功,估计问题只会短暂存在,等待后续修复