관리되는 데스크톱 앱 및 Windows 런타임

관리되는 데스크톱 앱 및 Windows 런타임

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

Visual Studio에서는 Windows 런타임 API를 사용하는 관리되는 Windows 스토어 앱을 작성하기가 매우 쉽습니다. 그러나 관리되는 데스크톱 앱을 작성하려는 경우 Windows 런타임 API를 사용하려면 몇 가지 작업을 수동으로 수행해야 합니다. 이 문서에서는 데스크톱 앱에서 Windows 런타임 API를 사용할 수 있도록 수행해야 하는 작업에 대한 정보를 제공합니다. 이 문서를 읽는 독자는 관리되는 데스크톱 앱 작성에 익숙하다고 가정합니다. 이 정보는 Windows 8에 적용됩니다.

소개

Visual Studio는 새 Windows 런타임 API를 쉽게 사용하는 기능을 포함하여 Windows 스토어 앱 개발이 점점 더 간단해지도록 향상되었습니다. 이러한 간단함은 새 "Windows 스토어" 프로젝트 유형 중 하나를 만들도록 선택하는 경우 더욱 활성화됩니다.

그러나 새 Windows 런타임 API를 사용하는 새 관리되는 데스크톱 앱을 만드는 경우 몇 가지 작업을 수동으로 수행해야 합니다. 이 문서에서는 이러한 작업을 수행하는 데 도움이 되는 몇 가지 팁을 제공합니다.

Windows 8 대상 지정

새 관리되는 데스크톱 앱을 만든 후에는 프로젝트 파일에서 수동으로 한 번 조정하여 Windows 8을 대상으로 한다는 점을 Visual Studio에 알려야 합니다.

<PropertyGroup>
  <TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>

이 작업은 Windows 메타데이터 파일에 참조를 추가하기 위해 필요합니다.

단계별 지침에 대해서는 방법: 참조 관리자를 사용하여 참조 추가 또는 제거를 살펴보고 창 탭 -> 핵심 하위 그룹까지 아래로 스크롤합니다.

표준 Windows 런타임 형식 사용

MSDN 라이브러리 설명서는 데스크톱 앱, Windows 스토어 앱 또는 둘 다에 적용되는 각 Windows API를 식별합니다. 따라서 데스크톱 앱에서는 다음과 같이 문서화된 API만 사용해야 합니다.

  • Applies to: 데스크톱 앱만

또는

  • Applies to: 데스크톱 앱 | Windows 스토어 앱

또한 각 API에는 문서화된 고유한 제한 또는 종속성 집합이 있을 수 있습니다. 예를 들어 일부 API는 만들어진 UI 프레임워크가 있는 경우에만 작동합니다. 따라서 각 Windows 런타임 클래스가 데스크톱 앱에서 작동할지 확인하려면 사용하려는 각 클래스에 대한 설명서를 끝까지 읽어야 합니다.

즉, 데스크톱 앱은 한 가지 필수 참조로 프로젝트를 준비한 다음에야 Windows 런타임의 많은 부분을 사용할 수 있습니다. Windows 런타임은 Windows 런타임 라이브러리 전체에서 사용되는 IEnumerable 같은 몇 가지 표준 클래스 및 인터페이스를 System.Runtime에 정의합니다. 기본적으로 관리되는 데스크톱 앱은 이러한 유형을 찾을 수 없으므로 Windows 런타임 클래스로 의미 있는 작업을 수행하려면 먼저 System.Runtime을 수동으로 참조해야 합니다. 이러한 수동 참조를 만들려면

1. 솔루션 탐색기에서 관리되는 데스크톱 앱 프로젝트로 이동합니다.
2. 참조 노드를 마우스 오른쪽 단추로 클릭하고 참조 추가를 클릭합니다.
3. 찾아보기 탭을 클릭합니다.
4. 찾아보기…를 클릭합니다.
5. System.Runtime.dll로 이동합니다. 일반적으로 %ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\System.Runtime.dll 같은 경로에서 찾을 수 있습니다.

이제 다른 Windows 메타데이터 파일에 대한 참조를 추가하고 데스크톱 앱에 해당 Windows 런타임 API를 사용할 수 있습니다.

Windows COM API 사용

Windows 8에는 COM을 통해 사용할 수 있는 몇 가지 유용한 새 API가 있습니다. 이 문서의 범위를 벗어나는 것처럼 보일 수 있지만 이러한 새 COM API는 Windows 런타임과 함께 자주 사용되어 Windows 스토어 앱 모델에서 몇 가지 새로운 Windows 기능으로 작업을 합니다. 예를 들어 설치된 Windows 스토어 앱 패키지에 대해 열거하는 관리되는 데스크톱 앱을 작성하려는 경우 매니페스트에서 해당 Windows 스토어 앱에 대한 정보를 검색하는 COM 인터페이스 IAppxManifestReader와 함께 Windows 런타임 PackageManager 클래스를 사용하여 설치된 해당 Windows 스토어 앱을 검색할 수 있습니다.

이러한 COM 인터페이스를 사용하려면 형식 라이브러리를 생성한 다음 해당 COM 인터페이스의 정의를 포함하는 관리 어셈블리를 생성해야 합니다.

1. Visual Studio 개발자 명령 프롬프트를 엽니다.
2. midl %ProgramFiles(x86)%\Windows Kits\8.0\Include\winrt\<IDL Filename> /out <path>\<TLB Filename>과 같은 명령을 실행하여 형식 라이브러리를 생성합니다.
3. tlbimp <path>\<TLB Filename> /namespace:<Namespace> /out:<path>\<Assembly filename>과 같은 명령을 실행하여 방금 생성한 형식 라이브러리를 .NET 어셈블리로 변환합니다.
4. 이제 Visual Studio 내에서 방금 만든 어셈블리에 대한 참조를 추가합니다.
a. 솔루션 탐색기에서 관리되는 데스크톱 앱 프로젝트로 이동합니다.
b. 참조 노드를 마우스 오른쪽 단추로 클릭하고 참조 추가를 클릭합니다.
c. 찾아보기 탭을 클릭합니다.
d. 찾아보기...를 클릭합니다.

문제 해결

몇 가지 문제 해결 단계를 인식하고 있어야 합니다.

  • 경우에 따라 3단계의 .NET 어셈블리 생성을 건너뛰고 Visual Studio의 참조 추가 대화 상자에서, 2단계에서 만든 형식 라이브러리에 참조를 바로 추가할 수 있습니다. 그러나 이 방법이 항상 작동하는 것은 아니며 이런 방식으로 만든 형식 라이브러리를 참조하려고 하면 Visual Studio가 실패할 수 있습니다. 이런 경우 일반적으로 3단계와 4단계에서 .NET 어셈블리를 생성하고 참조하여 작동하도록 할 수 있습니다.
  • 4단계에서 .NET 어셈블리를 추가하면 기본적으로 Visual Studio에서 Interop 형식 포함True로 설정합니다. 솔루션 탐색기의 참조 폴더에서 새로 참조된 어셈블리를 마우스 오른쪽 단추로 클릭하여 이 설정을 확인할 수 있습니다. 이 설정으로 인해 나중에 프로젝트를 컴파일할 때 오류 CS1752: Interop 형식 '<type name>'을(를) 포함할 수 없습니다.와 같은 오류가 발생할 수 있습니다. 대신 해당 인터페이스를 사용합니다.

    이는 쉬운 솔루션에서도 자주 발생하는 매우 일반적인 문제입니다. 자세한 내용은 Interop 형식을 포함할 수 없음(영문)을 참조하세요.

관련 항목

방법: 참조 관리자를 사용하여 참조 추가 또는 제거
Interop 형식을 포함할 수 없음

 

 

표시:
© 2017 Microsoft