簡體   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