Partilhar via


ProjectUpgradeTool

Observação

Essa ferramenta não está mais incluída no WDK. Você ainda pode encontrá-lo no WDK para Windows 10, versão 1607.

O ProjectUpgradeTool usa os arquivos de projeto (*.vcxproj) e de solução (*.sln) do Microsoft Visual Studio 2012 que foram criados com o WDK (Windows Driver Kit) para Windows 8 e os atualiza para funcionar com o WDK para Windows 8.1 e o Microsoft Visual Studio 2013.

Importante O ProjectUpgradeTool não altera seus arquivos de origem. A ferramenta converte apenas os arquivos de projeto e soluções. Por padrão, a ferramenta salva uma cópia de backup dos arquivos originais.

Para atualizar um projeto ou solução do WDK 8 para o WDK 8.1

  1. Abra uma janela de Prompt de comando do Visual Studio.

  2. Digite o comando ProjectUpgradeTool e especifique o diretório raiz (ou pai) que contém o projeto do WDK (Windows Driver Kit) 8 ou os arquivos de solução que você deseja atualizar para o WDK (Windows Driver Kit) 8.1 para Windows 8.1. Por exemplo, o comando a seguir atualiza todos os arquivos no diretório e subdiretórios C:\myDriver.

    ProjectUpgradeTool.exe  C:\myDriver
    
  3. Abra os arquivos de projeto ou solução do WDK 8.1 usando o Visual Studio 2013. A ferramenta mantém os nomes originais dos arquivos. As versões anteriores são salvas com a extensão de nome de arquivo .backup. Observação Se você quiser criar destinos para Windows Vista, usando o Visual Studio 2013 e o WDK 8.1, consulte O que fazer se você não conseguir criar um destino do Windows Vista depois de migrar um projeto do WDK 8 para o WDK 8.1.

Sintaxe ProjectUpgradeTool

A ferramenta de atualização do projeto está localizada no diretório %WindowsSdkDir%\bin\x86\. Por exemplo, C:\Arquivos de Programas (x86)\Windows Kits\8.1\bin\x86.

O ProjectUpgradeTool.exe tem a seguinte sintaxe:

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

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

Especifica um nome para o arquivo de log e especifica o nível de registro em log (consulte Detalhamento).

-ConsoleLog:<Verbosidade>

Especifica um nome para o arquivo de log do Console e especifica o nível de log (consulte Verbosidade).

Detalhamento

Os níveis de log padrão para o arquivo de log e o log do console são Detalhado e Informações , respectivamente. Verbosity é um dos System.Diagnostics.SourceLevels.

-Sem backup

Informa ao ProjectUpgradeTool para não fazer uma cópia de backup do projeto original (.vcxproj) ou das soluções (.sln). Quando você seleciona essa opção, os arquivos originais do projeto e da solução são substituídos e só funcionarão com o WDK para Windows 8.1 e Visual Studio 2013.

-NoToolsetUpgrade

Especifique a opção -NoToolsetUpgrade se você não quiser usar o conjunto de ferramentas da plataforma WDK 8.1 ao especificar configurações de build para versões do Windows anteriores ao Windows 8.1. Quando você seleciona essa opção, somente as configurações do WinPreRel serão criadas usando o WDK mais recente.

-InPlaceUpgrade

Substitui todas as configurações de build existentes pela nova configuração do WinPreRel . Isso impede que você crie para versões anteriores do Windows.

-ForceUpgrade

Força cada arquivo de projeto (.vcxproj) a ser atualizado, mesmo que o projeto não atenda aos requisitos de um projeto de driver.

-ManterObsoletoConfigs

Retém as configurações de destino para sistemas operacionais que não têm mais suporte no WDK (por exemplo, Windows Vista). No entanto, para criar para esses destinos obsoletos, você precisa ter o Visual Studio 2012 e o WDK 8 instalados no computador, além do WDK 8.1 e do Visual Studio 2013. Por exemplo, suponha que você queira atualizar o projeto de driver para usar o WDK 8.1 para todas as versões de destino com suporte (Windows 7, Windows 8 e Windows 8.1). E você ainda deseja usar o mesmo projeto de driver para continuar criando para o Windows Vista. Para fazer isso, atualize o arquivo de projeto usando a opção -KeepObsoleteConfigs para manter a configuração de destino do Windows Vista no projeto. A configuração do Windows Vista continuará a usar o conjunto de ferramentas WindowsKernelModeDriver8.0 (disponível no WDK 8), mesmo se você criar o projeto no Visual Studio 2013.

Comentários

O que fazer se você vir o erro MSB8020 (Platform Toolset = 'WindowsKernelModeDriver8.0') não pode ser encontrado

Se você tentar abrir um projeto ou solução que foi criado com o WDK 8, poderá ver a seguinte mensagem de erro ao tentar criar o projeto usando o 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...".

O conjunto de ferramentas da plataforma no WDK 8 era WindowsKernelModeDriver8.0. Para corrigir esse erro, execute o ProjectUpgradeTool conforme descrito aqui e atualize sua solução WDK 8 para usar o conjunto de ferramentas disponível no WDK 8.1

O que fazer se você não conseguir criar um destino do Windows Vista depois de migrar um projeto do WDK 8 para o WDK 8.1

Problema: não é possível criar um destino do Windows Vista após a migração de um projeto do WDK 8 para o WDK 8.1.

Cenário: você criou um projeto usando o WDK 8 e o Visual Studio 2012. Você atualizou o projeto/solução usando o WDK 8.1 e o Visual Studio 2013, usando a ferramenta ProjectUpgradeTool. Você faz isso usando o seguinte comando para preservar a configuração do Windows Vista: ProjectUpgradeTool.exe PathToProjectFolder -KeepObsoleteConfigs.

Você abre o projeto no WDK 8.1. Ao criar um destino do Windows Vista Win32, você pode ver a seguinte mensagem de erro:

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

Ao criar um destino x64 do Windows Vista, você pode ver as seguintes mensagens de erro:

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

Solução alternativa: você precisa fazer duas alterações.

  1. Corrija os arquivos WindowsDriver8.0.x64.props e WindowsDriver8.0.Win32.props.

    Você precisa fazer correções em expressões condicionais nesses dois arquivos *.props. Os arquivos estão localizados no diretório C:\Arquivos de Programas (x86)\Windows Kits\8.0\build.

    Em cada arquivo *.props, localize a expressão em que ('$(VisualStudioVersion)' != '11.0'). Por exemplo, a primeira instância terá a seguinte aparência:

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

    Altere o diferente (!=) para menor que (&lt;).

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

    Localize a próxima instância da expressão em que ('$(VisualStudioVersion)' != '11.0')

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

    E altere o diferente de (!=) para menor que (&lt;).

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

    Depois de fazer as alterações, salve os dois arquivos *.props.

  2. Corrija o arquivo de projeto para o driver.

    Abra o arquivo de projeto (*.vcxproj) do driver.

    Localize as configurações de destino do Vista no arquivo de projeto (versão e depuração). Por exemplo:

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

    Adicione a propriedade PackageDir às definições de configuração do Windows Vista. Na maioria dos casos, você deve usar os valores padrão: <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>
    

    Faça a mesma alteração para suas outras configurações.

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

    Depois de fazer essas alterações e salvar o arquivo, você pode abrir e compilar o projeto no Visual Studio 2013. O projeto deve continuar a funcionar com o Visual Studio 2012. Observe que, mesmo após essas alterações, você ainda precisa ter o WDK 8 e o Visual Studio 2012 instalados no computador.

Como criar um driver

Ambiente de build do WDK e do Visual Studio