ProjectUpgradeTool
참고 항목
이 도구는 더 이상 WDK에 포함되지 않습니다. Windows 10 버전 1607용 WDK에서 찾을 수 있습니다.
ProjectUpgradeTool은 Windows 8용 WDK(Windows 드라이버 키트)로 만든 Microsoft Visual Studio 2012 프로젝트(*.vcxproj) 및 솔루션 파일(*.sln)을 가져와서 Windows 8.1 및 Microsoft Visual Studio 2013용 WDK에서 작동하도록 업그레이드합니다.
중요 ProjectUpgradeTool은 원본 파일을 변경하지 않습니다. 이 도구는 프로젝트 및 솔루션 파일만 변환합니다. 기본적으로 도구는 원래 파일의 백업 복사본을 저장합니다.
WDK 8 프로젝트 또는 솔루션을 WDK 8.1로 업그레이드하려면
Visual Studio 명령 프롬프트 창을 엽니다.
ProjectUpgradeTool 명령을 입력하고 Windows 8.1용 WDK(Windows 드라이버 키트) 8.1로 업그레이드하려는 WDK(Windows 드라이버 키트) 8 프로젝트 또는 솔루션 파일이 포함된 루트(또는 부모) 디렉터리를 지정합니다. 예를 들어 다음 명령은 C:\myDriver 디렉터리 및 하위 디렉터리의 모든 파일을 업그레이드합니다.
ProjectUpgradeTool.exe C:\myDriver
Visual Studio 2013을 사용하여 WDK 8.1 프로젝트 또는 솔루션 파일을 엽니다. 도구는 파일의 원래 이름을 유지합니다. 이전 버전은 .backup 파일 이름 확장명을 사용하여 저장됩니다. 참고 Visual Studio 2013 및 WDK 8.1을 사용하여 Windows Vista에 대한 대상을 빌드하려면 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>:[<자세한 정보 표시]> |
로그 파일의 이름을 지정하고 로깅 수준을 지정합니다(자세한 정보 표시 참조). |
-ConsoleLog:<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 옵션을 지정합니다. 이 옵션을 선택하면 WinPreRel 구성만 최신 WDK를 사용하여 빌드됩니다. |
-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로 마이그레이션한 후 Windows Vista 대상을 빌드할 수 없는 경우 수행할 작업
오류 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를 사용하여 프로젝트를 만들었습니다. ProjectUpgradeTool 도구를 사용하여 WDK 8.1 및 Visual Studio 2013을 사용하여 프로젝트/솔루션을 업그레이드했습니다. 이렇게 하려면 다음 명령을 사용하여 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
해결 방법: 두 가지를 변경해야 합니다.
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>
같지 않음(!=)을 보다 작게(
<
)로 변경합니다.<When Condition="'$(VisualStudioVersion)' <'11.0'">
식의 다음 인스턴스를 찾습니다.
('$(VisualStudioVersion)' != '11.0')
<When Condition="('$(PlatformToolset)' == 'WindowsApplicationForDrivers8.0') and ('$(VisualStudioVersion)' != '11.0')">
그리고 같지 않음(!=)을 ()보다
<
작게 변경합니다.<When Condition="('$(PlatformToolset)' == 'WindowsApplicationForDrivers8.0') and ('$(VisualStudioVersion)' <'11.0')">
변경한 후 *.props 파일을 모두 저장합니다.
드라이버의 프로젝트 파일을 수정합니다.
드라이버에 대한 프로젝트 파일(*.vcxproj)을 엽니다.
프로젝트 파일(릴리스 및 디버그)에서 Vista 대상 구성을 찾습니다. 예시:
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Vista Debug|Win32'"> <TargetVersion>Vista</TargetVersion> <UseDebugLibraries>True</UseDebugLibraries> <PlatformToolset>WindowsKernelModeDriver8.0</PlatformToolset> </PropertyGroup>
Windows Vista 구성 설정에 PackageDir 속성을 추가합니다. 대부분의 경우 기본값
<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가 설치되어 있어야 합니다.