UwpDesktop에서 알 수없는 오류가 발생하게 된 메모

2020/2/1 추가
Windows 10 WinRT API Pack이 출시되었습니다.
공식적인 방법으로 여기를 사용하는 것이 좋습니다.
  • Windows 10 WinRT API Pack은 NuGet 패키지 Microsoft.Windows.SDK.Contracts로 게시됩니다.
  • 개발 프로젝트를 PackageReference 대응으로 설정 변경하고 NuGet 패키지를 추가하는 것만으로 이용 가능.

  • 상세
    - Microsoft, Windows 10의 기능을 쉽게 WinForms/WPF 앱에 통합할 수 있는 라이브러리 공개
    - 데스크톱 앱에서 UWP Api 호출

    소개



    VisualStudio에서 유니버설 Windows 플랫폼 앱이 있네요, 요즘. UWP라는 것.
    이것에 아무래도 익숙하지 않아서 지금까지의 데스크탑(.net) 어플리케이션으로 하고 있었습니다만, UWP 전용의 API라든지 있어, 그 API만은 사용하고 싶은 경우가 있습니다.

    그럴 때, UwpDesktop라는 애드온을 사용하면 데스크톱 앱에서도 쉽게 UWP의 API를 사용할 수 있으므로 애용하고 있었습니다.
  • 매우 간단! WPF와 같은 .NET 앱에서 UWP API 사용

  • 하지만, 개발 환경을 갱신하면 갑자기 빌드 에러가 다발하게 되어 버려, 울음・・・
    여러가지 조사해 어떻게든 빌드할 수 있게 되었으므로 메모

    환경



    원래 개발 환경


  • OS=Windows10 1709
  • 개발 환경=Visual Studio Pro 2015
  • C#
  • .Net Framework 4.6.2
  • WPF 응용 프로그램 (.net)

  • UwpDesktop 버전=10.0.14393.3

  • 새로운 개발 환경


  • OS=Windows10 1903

  • 개발 환경 = Visual Studio Pro 2019(16.3.1)
  • C#
  • .Net Framework 4.6
  • WPF 응용 프로그램 (.net)

  • UwpDesktop 버전=10.0.17763.0
  • Visual Studio 설치 관리자에서 개별 구성 요소에 Windows10 SDK(10.0.17763.0)를 추가합니다.
  • 아마↑의 버젼에 UwpDesktop가 대응하고 있지 않다, 라고 하는 것일 것이라고 생각합니다.



  • 현상



    새로운 환경에서 빌드하면 이런 오류가 발생합니다.
  • 참조 설정이 전혀 효과가 없네요.



  • 대응



    uwp-desktop의 GitHub 사이트 를 살펴봅니다.
    아무래도 영어로 써 있어, 여러가지 시험한 결과, 이하의 순서로 빌드가 통과하게 되었습니다.

    1.UwpDesktop를 제거한다
    2. 참조 설정에서 다음 두 가지 추가
  • C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17763.0\Windows.winmd
  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
  • 같은 이름의 파일이 아치코치에 있으므로 경로를 틀리지 않도록.
  • UwpDesktop이라면 대량으로 참조가 추가되므로, 사용하고 있는 API에 따라서는 이 요령으로 한층 더 참조 추가가 필요할 것 같다.

  • 마지막으로



    잘 조사하면 특히 어려운 일 없을까 생각합니다만, 최근 버튼 하나로 뭐든지 할 수 있게 되었으므로, 이런 일이라도 빠져 버립니다.
    사용하고 있는 API의 종류라든가, 버젼에 따라서는 그러하지 않다고 생각하기 때문에, 이번은 이것으로 할 수 있었다고 하는 정도라고 생각합니다.

    좋은 웹페이지 즐겨찾기