繁体   English   中英

如何设置默认的 Windows 工具包 (SDK) 版本?

[英]How to set the default Windows kit (SDK) version?

我曾经为我的 C++ 应用程序使用 Windows 8.1 SDK,一切正常。 今天我安装了 Windows 10 SDK,但找不到将其设置为默认 SDK 的方法。

我可以在 Visual Studio 项目设置中对新的 SDK 路径进行硬编码,但这是非常不可取的。 我希望每个新项目默认使用新工具包。 SDK 没有环境变量,我在注册表中也找不到任何内容。
更准确地说,注册表中有 Windows SDK 条目,但我需要的 - C++ 包含和库 - 称为 Windows工具包(位于 C:\Program Files (x86)\Windows Kits)。

好吧,似乎没有多少人遇到这个问题,但我仍然会发布一个解决方法来设置默认的 sdk 版本。 它适用于 Visual Studio 2017 社区。 考虑以下情况:

  • 你有一个项目的解决方案,你不能重新定位

  • 您之前在 PC 上安装了较旧的 VS

  • 当您打开解决方案时,VS 出于某种原因将 SDK 版本设置为 8.1,而您使用的是 Windows SDK 10

  • 当您尝试构建时,您会遇到以下情况:

错误 MSB8036 找不到 Windows SDK 版本 8.1。 安装所需版本的 Windows SDK 或在项目属性页中更改 SDK 版本,或右键单击解决方案并选择“重新定位解决方案”。

因为 SDK 8.1 没有在您的 PC 上正确安装,并且以某种方式重新安装它并不能解决问题。

  • 您团队中的其他人没有这样的问题,因为项目没有在 *.vcxproj 文件中明确定义的 Windows SDK 版本。

因此,很明显,安装了多个 SDK 的 MS 构建系统存在某种混乱,最糟糕的部分是它导致将损坏安装的 SDK 定义为默认值。 我使用以下解决方法来显式设置默认 Windows SDK:

  • 进入【VS安装路径】\Common7\IDE\VC\VCTargets ,例如:

C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.props)

  • 以管理员身份打开文件Microsoft.Cpp.WindowsSDK.props
  • 查找行
    <DefaultWindowsSDKVersion Condition="'$(DefaultWindowsSDKVersion)' == ''
    and '$(AppContainerApplication)' != 'true'">8.1</DefaultWindowsSDKVersion>

将 8.1 更改为您确定已正确安装的 SDK 版本,然后保存文件。 在我的例子中是 10.0.17763.0,所以最后一行是

    <DefaultWindowsSDKVersion Condition="'$(DefaultWindowsSDKVersion)' == ''
    and '$(AppContainerApplication)' != 'true'">10.0.17763.0</DefaultWindowsSDKVersion>

现在重新打开您的解决方案并尝试构建它。 应该工作正常。

我的第一个故障排除技巧是卸载您拥有的所有 Visual Studio 内容,然后重新启动。 然后安装最新版本的 Visual Studio。 然后通过 Visual Studio 安装程序向导安装你需要的任何其他 SDK。 如果您需要安装 Visual Studio 2015 和 2019,请继续安装 2015,然后再安装 2019。

如果您想更改项目模板,您实际上可以这样做。 默认模板的文件夹在这里:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ProjectTemplates\VC\WindowsDesktop\

假设您要修改 ConsoleApplication 模板。 创建一个新项目,在这个新项目中编辑项目属性“SDK版本”为8.1。 保存项目,然后转到项目->导出模板。 导出模板。 它将是 Documents\Visual Studio 2019\My Exported Templates 中的一个 zip 文件。 解压它。

您会注意到此文件夹中的 .vstemplate 文件与上述目录中的文件类似。 您将在节点中看到它将引用 a.vcxproj 文件。 在 this.vcxproj 文件中,您将找到以下属性:

<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>

因此,为了修改默认模板以匹配您刚刚导出的模板,您需要从我的导出模板文件中添加必要的文件和行 XML,并覆盖程序文件中的默认值。 每次更新 VS 时,这些可能都会被覆盖。

或者,只需将导出的模板的 zip 文件解压缩到文件夹中:

ProjectTemplates\VC\WindowsDesktop\

重新加载 visual studio 后,您会在模板中找到它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM