IT 이모저모

수동으로 설치하는 방법

exien 2018. 3. 6. 17:36

수동으로 설치하는 방법

 NuGet에서 다운받을 수 있는 UwpDesktop는 1607 / 14393까지 밖에 지원하지 않습니다. 1703/15063 이후에 추가 된 API를 사용하려면 프로젝트를 수동으로 설치해야합니다. UwpDesktop를 다운한 후 추가 설정을 할 수 있습니다 만, 여기에서는 수동으로 수행하는 방법에 대해 알어봅니다. 이 절차는 Microsoft 문서 " Windows 10 용 데스크톱 응용 프로그램 심화 "에 실려있는 것입니다.

 그 절차의 개요는 UWP의 API에 대한 참조를 추가하는 것과 불필요한 파일이 빌드 출력에 포함되지 않도록 조정하는 것입니다.

참조 추가

 첫째, 일반적으로 Windows Forms 및 WPF 등 .NET 응용 프로그램 프로젝트를 만들어주세요 (아래의 예에서는 .NET Framework의 단위 테스트 프로젝트를 사용하고 있습니다). 그러면 UWP API를 사용하기위한 참조를 추가하고 있습니다. 이후 Visual Studio 2015에서 설명합니다.

 솔루션 탐색기에서 프로젝트에서 참조를 마우스 오른쪽 단추로 클릭 한 다음 참조 추가 메뉴를 선택합니다. [참조 관리자 대화가 나오므로 찾아보기 버튼을 클릭합니다. 나온 파일 선택 대화 상자에서 다음 파일을 순서대로 찾아 [추가] 버튼을 클릭합니다 (같은 폴더에있는 파일은 여러 선택하여 한꺼번에 추가 할 수 있습니다). 확장자 ".WinMD"파일을 선택하면 파일 선택 대화 상자에서 [추가] 버튼 위에있는 드롭 다운을 모든 파일 (*. *) 바꾸지 않는 안됩니다 (다음 사진).

파일 선택 대화
[모든 파일 (*. *)하고 WinMD 파일을 선택

참조 추가 파일

 최소한 필요한 파일은 다음의 6 가지입니다.

  • System.Runtime.InteropServices.WindowsRuntime.dll
    C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETCore \ {.NET 버전}
  • System.Runtime.WindowsRuntime.dll
    C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETCore \ {.NET 버전}
  • System.Runtime.WindowsRuntime.UI.Xaml.dll
    C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETCore \ {.NET 버전}
  • Windows.WinMD
    C : \ Program Files (x86) \ Windows Kits \ 10 \ UnionMetadata \ Facade
  • Windows.Foundation.FoundationContract.winmd
    C : \ Program Files (x86) \ Windows Kits \ 10 \ References \ {SDK 버전} \ Windows.Foundation.FoundationContract \ {계약 버전}
  • Windows.Foundation.UniversalApiContract.winmd
    C : \ Program Files (x86) \ Windows Kits \ 10 \ References \ {SDK 버전} \ Windows.Foundation.UniversalApiContract \ {계약 버전}

 여기서 {.NET 버전} 는 "v4.5"등입니다. 원하는 3 파일이 존재하는 최신 폴더를 선택해두면 좋을 것입니다. 이 글을 쓰는 시점에서 "v4.5.1"였습니다.

 {SDK 버전} 은 Windows 10 SDK 버전에서 "10.0.15063.0」나 「10.0.16299.0"등입니다. 15063 이전의 SDK는 버전 별 폴더에 나누어 져 있지 않으므로 ({SDK 버전}에 해당하는 폴더 계층 구조가없는) 뒤에 {계약 버전}만으로 식별 할 수 있습니다.

 {계약 버전} 은 15063 이상에서는 폴더가 하나만있을 것이므로 짐작할 수 없을 것입니다. 15063 이전은 이전 에 소개 한 Device Family Extension SDKs and API contracts 을 확인하십시오.

추가 한 참조의 예

 구체적으로 1703/15063의 UWP API를 사용하기 위해 추가 한 참조는 다음과 같습니다했습니다.

  • System.Runtime.InteropServices.WindowsRuntime.dll
    C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETCore \ v4.5.1
  • System.Runtime.WindowsRuntime.dll
    C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETCore \ v4.5.1
  • System.Runtime.WindowsRuntime.UI.Xaml.dll
    C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETCore \ v4.5.1
  • Windows.WinMD
    C : \ Program Files (x86) \ Windows Kits \ 10 \ UnionMetadata \ Facade
  • Windows.Foundation.FoundationContract.winmd
    C : \ Program Files (x86) \ Windows Kits \ 10 \ References \ 10.0.15063.0 \ Windows.Foundation.FoundationContract \ 3.0.0.0
  • Windows.Foundation.UniversalApiContract.winmd
    C : \ Program Files (x86) \ Windows Kits \ 10 \ References \ 10.0.15063.0 \ Windows.Foundation.UniversalApiContract \ 4.0.0.0

WinMD 파일을 빌드에 포함되지 않도록하는

 참조를 추가 한 후, WinMD 파일은 출력 디렉토리에 복사되지 않도록 설정을 변경합니다. 솔루션 탐색기에서 참조]에 WinMD 파일을 선택하고 그 아래의 속성 창에서 로컬 복사를 찾고 True에서 False로 변경합니다 (아래 그림). 추가 한 WinMD 모든 파일에 대해 작업합니다.

로컬 복사를 False로 한
WinMD 파일은 로컬 복사를 False로하는

 또한 필요에 따라 WinMD에 대한 참조를 추가 할 수도 있겠지만, 그 때에도 잊지 않고 로컬에 복사 False로 바꾸십시오.

코드를 작성

 이상에서 수동으로도 UWP API를 사용할 수있게되었습니다. 예를 들어, 샘플 코드 (⇒ MsTestV2 )의 UnitTest1.cs 는 1607 / 15063에서 도입 된 CodecQuery 클래스 (Windows.Media.Core 이름 공간)를 사용하여 돌비 AC3 코덱이 지원되어 있는지 확인합니다 (다음 코드).

시스템이 지원하는 코덱 가져 오기 (1607/15063 이상)
var cq = new Windows.Media.Core.CodecQuery ();
var codecList 
  = await cq. FindAllAsync (
            Windows.Media.Core.CodecKind.Audio,
            Windows.Media.Core.CodecCategory.Decoder,
            Windows.Media.Core.CodecSubtypes.AudioFormatDolbyAC3);
var codec = codecList.FirstOrDefault ();
WriteLine (codec.DisplayName);
// 출력 : "Microsoft Dolby Digital Plus Decoder MFT"
1607/15063의 UWP API를 사용 유닛 테스트
1607/15063의 UWP API를 사용 유닛 테스트

MSTest V2

 위의 샘플 코드에서는 MSTest V2 (MSTest.TestFramework 1.2.0)를 사용하고 있습니다. MSTest V2의 API 문서는 Microsoft.VisualStudio.TestTools.UnitTesting Namespace 에 있습니다.

정리

 UWP의 많은 API는 기존의 .NET Framework 응용 프로그램 (WPF / Windows Forms / 콘솔 프로그램 등)에서도 사용할 수 있습니다. 그 설정은 UwpDesktop을 사용하면 간단합니다. 또는 수동으로 설정할 수 있습니다.

 Windows 10의 새로운 기능을 사용하여 앱을 만들고 싶다고 생각했을 때, UWP 있도록 할 필요는 없을지도 모릅니다. 제작 될 수 있었던 WPF와 Windows Forms에서 그 API를 호출 할 수 있는지 먼저 시도해 보자.

UWP 응용 프로그램에 관심이 솟아 사람에

 Windows 데스크톱 용 앱 개발과 Windows Forms이라면 경험이 있지만, 조금 UWP 응용 프로그램 개발도 신경이 쓰여 왔다는 분에게. 적합한 전자 책을 썼습니다!

UWP 응용 프로그램 개발 101 제 2 판 : Windows Forms 개발자를위한 C # / XAML에 따르면 UWP 앱 개발 입문」(BluewaterSoft 2017/7/1) 
· Kindle 버전 과 UWP 응용 프로그램 버전 이 있습니다. 
· 모두 무료로 앞부분을 읽을 수 있으므로 우선 시도해 보시기을보십시오.