ProjectUpgradeTool

注意

此工具不再包含在 WDK 中。 你仍然可以在适用于 Windows 10 版本 1607WDK 中找到它。

ProjectUpgradeTool 使用适用于 Windows 8 的 Windows 驱动程序工具包(WDK)创建Microsoft Visual Studio 2012 项目(*.vcxproj)和解决方案文件(*.sln),并升级它们以使用适用于 Windows 8.1 和 Microsoft Visual Studio 2013 的 WDK。

重要说明 ProjectUpgradeTool 不会更改源文件。 该工具仅转换项目和解决方案文件。 默认情况下,该工具保存原始文件的备份副本。

将 WDK 8 项目或解决方案升级到 WDK 8.1

  1. 打开“Visual Studio 命令提示符”窗口。

  2. 键入命令 ProjectUpgradeTool ,并指定包含要升级到 Windows 驱动程序工具包 (WDK) 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]>

指定日志文件的名称,并指定日志记录级别(请参阅 Verbosity)。

-ConsoleLog:<Verbosity>

指定控制台日志文件的名称,并指定日志记录级别(请参阅 Verbosity)。

Verbosity

日志文件和控制台日志记录的默认日志记录 级别分别为详细信息详细程度是 System.Diagnostics.SourceLevels一。

-NoBackup

告知 ProjectUpgradeTool 不要创建原始项目(.vcxproj)或解决方案(.sln)的备份副本。 选择此选项时,将覆盖原始项目和解决方案文件,并且仅适用于 Windows 8.1 和 Visual Studio 2013 的 WDK。

-NoToolsetUpgrade

如果不想在指定 Windows 8.1 之前的 Windows 版本的生成配置时使用 WDK 8.1 平台工具集,请指定 -NoToolsetUpgrade 选项。 选择此选项时,只会 使用最新的 WDK 生成 WinPreRel 配置。

-InPlaceUpgrade

将每个现有生成配置替换为新的 WinPreRel 配置。 这可以防止你为早期版本的 Windows 生成。

-ForceUpgrade

强制升级每个项目文件(.vcxproj),即使项目不符合驱动程序项目的要求也是如此。

-KeepObsoleteConfigs

保留 WDK 不再支持的操作系统的目标配置(例如 Windows Vista)。 但是,若要为这些过时的目标生成,除了 WDK 8.1 和 Visual Studio 2013 之外,还需要在计算机上安装 Visual Studio 2012 和 WDK 8。 例如,假设你想要升级驱动程序项目,以便对所有支持的目标版本(Windows 7、Windows 8 和 Windows 8.1)使用 WDK 8.1。 你仍希望使用相同的驱动程序项目继续为 Windows Vista 生成。 为此,请使用 -KeepObsoleteConfigs 选项升级项目文件,以将 Windows Vista 目标配置保留在项目中。 即使你在 Visual Studio 2013 中生成项目,Windows Vista 配置仍将继续使用 WindowsKernelModeDriver8.0 工具集(在 WDK 8 中可用)。

备注

如果看到错误MSB8020(平台工具集 = '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 生成环境