VS2019与VS2022共存时编译Unity HoloLens项目误调2022工具如何解决
问题原因
该问题由MSBuild全局工具链解析逻辑导致,和打开解决方案使用的VS版本无直接绑定关系。Unity为HoloLens生成的UWP解决方案默认未硬编码指定编译工具集版本,当设备同时安装多版本Visual Studio时,全局默认配置会优先指向已安装的最高版本VS对应的MSBuild、C/C++编译器、链接器路径,即便手动通过VS2019启动解决方案,编译阶段的工具路径仍会被全局配置覆写为VS2022的安装路径,最终因工具版本不匹配编译失败。
修复方案
以下方案均为单解决方案级别的局部配置,不会影响其他版本VS的正常使用,按需选择即可:
- 固定项目平台工具集版本
用VS2019打开解决方案后,右键解决方案节点选择「重定解决方案目标」,在弹窗中将平台工具集明确指定为Visual Studio 2019 (v142)。确认后逐个选中解决方案下的所有项目(包括Il2Cpp生成的底层项目、HoloLens主应用项目),打开项目属性页,在「配置属性-常规」栏将平台工具集同样设置为v142,取消勾选“从父级或项目默认设置继承”选项后保存配置。 - 通过Directory.Build.props强制覆写工具路径
进入解决方案根目录,新建名为Directory.Build.props的配置文件,写入如下内容(注意将VS2019安装路径、VCTools版本替换为本机实际安装的对应值):
<Project> <PropertyGroup> <VCToolsVersion>14.29.30133</VCToolsVersion> <VSInstallDir>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\</VSInstallDir> <MSBuildExtensionsPath>$(VSInstallDir)MSBuild\</MSBuildExtensionsPath> <VCToolsInstallDir>$(VSInstallDir)VC\Tools\MSVC\$(VCToolsVersion)\</VCToolsInstallDir> </PropertyGroup> </Project>
保存后重启VS2019再执行编译,该配置会被目录下所有项目自动加载,强制覆写全局的高版本工具路径配置。
- 通过VS2019专属开发者命令行启动环境
不要直接从开始菜单打开VS2019加载解决方案,先启动「x64 Native Tools Command Prompt for VS 2019」,该命令行会提前初始化VS2019专属的所有环境变量,覆盖全局的高版本路径配置,在命令行中执行devenv 你的解决方案完整路径.sln启动VS2019,此时编译会默认调用VS2019自带的完整工具链。
注意:不要修改VS2022的全局MSBuild配置,否则会导致VS2022编译其他项目时出现工具链匹配错误。
内容的提问来源于stack exchange,提问作者Velchivz
相关产品推荐
相关产品推荐

