使用MSBuild(VS2019、v142工具集)如何指定目标平台版本与最低版本?
通过MSBuild命令行指定Target Platform Version和Min Version(VS2019 + v142工具集)
别担心,其实MSBuild有个通用的属性覆盖机制,完全可以直接在命令行设置这两个参数,哪怕它们在项目的Globals PropertyGroup里也没问题。
核心方法:使用MSBuild的/p:参数覆盖属性
项目文件里的<WindowsTargetPlatformVersion>和<WindowsTargetPlatformMinVersion>这两个属性,直接对应命令行里的同名参数,只需要用/p:前缀指定即可。
具体命令示例
假设你要编译名为YourProject.sln的解决方案,指定v142工具集,目标平台版本为10.0.22621.0,最低版本为10.0.17763.0,命令如下:
MSBuild YourProject.sln /p:PlatformToolset=v142 /p:WindowsTargetPlatformVersion=10.0.22621.0 /p:WindowsTargetPlatformMinVersion=10.0.17763.0
如果是编译单个VC++项目文件(.vcxproj),把路径换成项目文件即可:
MSBuild YourProject.vcxproj /p:PlatformToolset=v142 /p:WindowsTargetPlatformVersion=10.0.22621.0 /p:WindowsTargetPlatformMinVersion=10.0.17763.0
几个关键注意点
- 命令行指定的参数会直接覆盖项目文件
GlobalsPropertyGroup里的对应设置,不需要修改项目源码 - 要确保你指定的SDK版本是本地已经安装的:可以打开VS2019的安装器,在“单个组件”里查看已安装的Windows SDK版本,避免指定未安装的版本导致编译失败
- 这种
/p:参数覆盖的方式是MSBuild的通用机制,几乎所有项目属性都可以用这种方式在命令行临时修改,这也是为什么你可能找不到专门针对这两个属性的文档——它们属于通用属性覆盖的范畴
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

