共用方式為


ProjectUpgradeTool

注意

此工具已不再包含在 WDK 中。 您仍然可以在 Windows 10 版本 1607WDK 中找到它。

ProjectUpgradeTool 會採用 visual Studio 2012 專案 (*.vcxproj) 和方案檔 (*.sln) Microsoft,這些檔案是使用適用於 Windows 8 的 Windows 驅動程式套件 (WDK) 所建立,並將它們升級為使用適用於 Windows 8.1 的 WDK 和 Microsoft Visual Studio 2013。

重要 ProjectUpgradeTool 不會變更您的來源檔案。 此工具只會轉換專案和方案檔。 根據預設,此工具會儲存源檔的備份複本。

將 WDK 8 專案或方案升級至 WDK 8.1

  1. 開啟 [Visual Studio 命令提示字元] 視窗。

  2. 輸入 ProjectUpgradeTool 命令,並指定根目錄,其中包含您要升級至 Windows Driver Kit (WDK) 8.1 for Windows 8.1 的 Windows 驅動程式套件 (WDK) 8.1 專案或方案檔。 例如,下列命令會升級 C:\myDriver 目錄和子目錄中的所有檔案。

    ProjectUpgradeTool.exe  C:\myDriver
    
  3. 使用 Visual Studio 2013 開啟 WDK 8.1 專案或方案檔。 此工具會保留檔案的原始名稱。 舊版會以 .backup 擴展名儲存。 注意 如果您想要能夠建置 Windows Vista 的目標,請使用 Visual Studio 2013 和 WDK 8.1,請參閱 在將 WDK 8 專案移轉至 WDK 8.1 之後無法建置 Windows Vista 目標時該怎麼辦。

ProjectUpgradeTool 語法

項目升級工具位於 %WindowsSdkDir%\bin\x86\ 目錄中。 例如,C:\Program Files (x86)\Windows Kits\8.1\bin\x86。

ProjectUpgradeTool.exe具有下列語法:

ProjectUpgradeTool.exe  < rootDir >
                          [-Log:[<LogFile>]:[<Verbosity>]]
                          [-ConsoleLog:<Verbosity>]
                          [-NoBackup]
                          [-NoToolsetUpgrade]
                          [-InPlaceUpgrade]
                          [-ForceUpgrade]
                          [-KeepObsoleteConfigs]   

-Log:<LogFile>:[<Verbosity]>

指定記錄檔的名稱,並指定記錄層級(請參閱 詳細資訊)。

-ConsoleLog:<Verbosity>

指定主控台記錄檔的名稱,並指定記錄層級(請參閱 詳細資訊)。

冗長

記錄檔和主控台記錄的預設記錄層級分別為 詳細資訊資訊詳細資訊是 System.Diagnostics.SourceLevels其中一個。

-NoBackup

告知 ProjectUpgradeTool 不要備份原始專案 (.vcxproj) 或解決方案 (.sln)。 當您選取此選項時,會覆寫原始專案和方案檔,且僅適用於 Windows 8.1 和 Visual Studio 2013 的 WDK。

-NoToolsetUpgrade

如果您不想在 Windows 8.1 之前指定 Windows 版本的組建組態時,請指定 -NoToolsetUpgrade 選項。 當您選取此選項時,只會 使用最新的 WDK 來建置 WinPreRel 組態。

-InPlaceUpgrade

以新的 WinPreRel 組態取代每個現有的組建組態。 這可防止您為舊版 Windows 建置。

-ForceUpgrade

強制升級每個項目檔 (.vcxproj),即使專案不符合驅動程序專案的需求也一樣。

-KeepObsoleteConfigs

保留 WDK 不再支援之作業系統的目標組態(例如 Windows Vista)。 不過,若要建置這些過時的目標,除了 WDK 8.1 和 Visual Studio 2013 之外,您還需要在電腦上安裝 Visual Studio 2012 和 WDK 8。 例如,假設您想要升級驅動程序專案,以針對所有支持的目標版本使用WDK 8.1(Windows 7、Windows 8 和 Windows 8.1)。 您仍然想要使用相同的驅動程序項目繼續建置 Windows Vista。 若要這樣做,您可以使用 -KeepObsoleteConfigs 選項來升級項目檔,以將 Windows Vista 目標組態保留在專案中。 即使您在 Visual Studio 2013 中建置專案,Windows Vista 組態仍會繼續使用 WindowsKernelModeDriver8.0 工具組(WDK 8 中提供)。

評論

如果您看到錯誤MSB8020 (Platform Toolset = 'WindowsKernelModeDriver8.0') 找不到錯誤,該怎麼辦

如果您嘗試開啟以 WDK 8 建立的專案或方案,當您嘗試使用 WDK 8.1 建置專案時,可能會看到下列錯誤訊息。

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(54,5): error MSB8020: The builds tools for WindowsKernelModeDriver8.0 (Platform Toolset = 'WindowsKernelModeDriver8.0') cannot be found. To build using the WindowsKernelModeDriver8.0 build tools, please install WindowsKernelModeDriver8.0 build tools. Alternatively, you may update to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Update VC++ Projects...".

WDK 8 中的平臺工具組是 WindowsKernelModeDriver8.0。 若要修正此錯誤,請執行 ProjectUpgradeTool,如這裡所述,並升級您的 WDK 8 解決方案,以使用 WDK 8.1 中可用的工具組

如果您在將 WDK 8 專案移轉至 WDK 8.1 之後無法建置 Windows Vista 目標,該怎麼辦

問題: 將 WDK 8 專案移轉至 WDK 8.1 之後,無法建置 Windows Vista 目標。

案例: 您已使用 WDK 8 和 Visual Studio 2012 建立專案。 您已使用 WDK 8.1 和 Visual Studio 2013,使用 ProjectUpgradeTool 工具升級專案/方案。 您可以使用下列命令來保留 Windows Vista 組態: ProjectUpgradeTool.exe PathToProjectFolder -KeepObsoleteConfigs。

您會在 WDK 8.1 中開啟專案。 當您建置 Win32 Windows Vista 目標時,您可能會看到下列錯誤訊息:

error MSB6004: The specified task executable location "C:\Program Files (x86)\Windows Kits\8.0\bin\x86\x86\CL.exe" is invalid.   C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets  347 5   KMDF Driver1

當您建置 x64 Windows Vista 目標時,您可能會看到下列錯誤訊息:

error TRK0002: Failed to execute command: ""C:\Program Files (x86)\Windows Kits\8.0\bin\x64\stampinf.exe" -d * -a amd64 -v * -k 1.11 -u 1.11.0 -f x64\VistaRelease\KMDFDriver1.inf". The operation identifier is not valid.  C:\Users\Administrator\Desktop\KMDF Driver1 - Copy\KMDF Driver1\TRACKER KMDF Driver1
error : Verification Error: Driver package has no driver version.    C:\Program Files (x86)\Windows Kits\8.0\build\WindowsDriver8.0.common.targets   1338    5   KMDF Driver1 Package

因應措施: 您必須進行兩項變更。

  1. 更正 WindowsDriver8.0.x64.props 和 WindowsDriver8.0.Win32.props 檔案。

    您需要在這兩個 *.props 檔案中對條件表達式進行更正。 這些檔案位於 C:\Program Files (x86)\Windows Kits\8.0\build 目錄中。

    在每個 *.props 檔案中,找出運算式,其中 ('$(VisualStudioVersion)' != '11.0')。 例如,第一個實例看起來會像下面這樣:

            <When  Condition="'$(VisualStudioVersion)' != '11.0'">
          <PropertyGroup>
            <CLToolPath Condition="'$(CLToolPath)' == ''">$(WDKContentRoot)bin\x86\x64</CLToolPath>
            <CLToolArchitecture>Native32Bit</CLToolArchitecture>
            <LinkToolPath Condition="'$(LinkToolPath)' == ''">$(WDKContentRoot)bin\x86\x64</LinkToolPath>
            <LinkToolArchitecture>Native32Bit</LinkToolArchitecture>
            <MIDLToolPath Condition="'$(MIDLToolPath)' == ''">$(WDKContentRoot)bin\x86</MIDLToolPath>
            <MIDLToolArchitecture>Native32Bit</MIDLToolArchitecture>
            <LibToolPath Condition="'$(LibToolPath)' == ''">$(WDKContentRoot)bin\x86</LibToolPath>
            <LibToolArchitecture>Native32Bit</LibToolArchitecture>
            <ExecutablePath>$(WDKContentRoot)bin\x86\x64;$(WDKContentRoot)bin\x86;$(WDKContentRoot)tools\pfd\bin\bin\AMD64;$(WDKContentRoot)tools\tracing\x64;$(ExecutablePath)</ExecutablePath>      
        </PropertyGroup>
        </When>
    

    將不等於 (!=) 變更為小於 (&lt;)。

        <When  Condition="'$(VisualStudioVersion)' &lt;'11.0'">
    

    找出表達式的下一個實例,其中 ('$(VisualStudioVersion)' != '11.0')

        <When Condition="('$(PlatformToolset)' == 'WindowsApplicationForDrivers8.0') and ('$(VisualStudioVersion)' != '11.0')">
    

    並將不等於 (!=) 變更為小於 (&lt;)。

        <When Condition="('$(PlatformToolset)' == 'WindowsApplicationForDrivers8.0') and ('$(VisualStudioVersion)' &lt;'11.0')">
    

    進行變更之後,請儲存兩個 *.props 檔案。

  2. 更正驅動程式的項目檔。

    開啟驅動程式的項目檔 (*.vcxproj)。

    在項目檔中找出 Vista 目標組態(發行和偵錯)。 例如:

       <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">
        <TargetVersion>Vista</TargetVersion>
        <UseDebugLibraries>True</UseDebugLibraries>
        <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
      </PropertyGroup>
    

    PackageDir 屬性新增至 Windows Vista 組態設定。 在大部分情況下,您應該使用預設值: <PackageDir>$(OutDir)\$(Intdir)</PackageDir>

       <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'">
        <TargetVersion>Vista</TargetVersion>
        <PackageDir>$(OutDir)\$(Intdir)</PackageDir>
        <UseDebugLibraries>True</UseDebugLibraries>
        <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
      </PropertyGroup>
    

    針對其他組態進行相同的變更。

        <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Vista Release|Win32'">
        <TargetVersion>Vista</TargetVersion>
        <PackageDir>$(OutDir)\$(Intdir)</PackageDir>
        <UseDebugLibraries>False</UseDebugLibraries>
        <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset>
      </PropertyGroup>
    

    進行這些變更並儲存盤案之後,您可以在 Visual Studio 2013 中開啟和建置專案。 項目應該會繼續使用 Visual Studio 2012。 請注意,即使在這些變更之後,您仍然需要在計算機上安裝 WDK 8 和 Visual Studio 2012。

建置驅動程式

WDK 和 Visual Studio 建置環境