解决vs vcpkg无法正确获取nuget版本问题

在输入 

 .\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"

此时修复成功,估计问题只会短暂存在,等待后续修复

参考文章vcpkg integrate project命令失败的问题 – eATM

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值