- ※ 적용 버전 : Windows 10 전체 버전 (version 1507 / build 12040 이상)
시작하기
Windows 10에 추가 된 새로운 기능의 많은 UWP (Universal Windows Platform)에만 탑재됩니다. 이러한 새로운 기능은 기존의 .NET 응용 프로그램에서 사용할 수없는 것일까 요?
그런 것은 없습니다. UWP의 많은 API는 .NET 응용 프로그램에서 쉽게 사용할 수 있습니다.
이번은, 일본어의 한자 섞인 문자열에서 읽어 가명을 취득하는 API 등을 소재로하여 .NET 응용 프로그램에서 UWP API를 호출 할 수 있도록하는 방법을 소개합니다.
대상
- .NET Framework에서 Windows 용 응용 프로그램을 만들고있는 개발자
- UWP 앱 개발자
필요한 환경
샘플 코드 (GitHub)를 그대로 사용해에는 다음의 환경이 필요합니다.
- Windows 10 version 1703 (build 15063) 이상
- Visual Studio 2015 Update 3 이상 (무료 Community Edition 가능)
- UWP 용 Windows 10 SDK : C # / VB 용 10.0.15063 이후
어떤 기능인가?
우선 샘플 코드 (WPF 응용 프로그램) 화면을 봐 (⇒ UF02UwpDesktop ).
이 응용 프로그램은 WPF입니다 . 릴리스 빌드 한 것은 Windows 7 등에서도 시작합니다 (화면이 표시되는 것만으로 기능하지 않습니다). Windows 10에서 움직이고있는 때에는 그 코드 숨김에서 UWP API를 호출하여 읽으 가명 등을 가져옵니다. 이와 같이 기존의 .NET 응용 프로그램에서 UWP API를 사용할 수 있습니다.
이 응용 프로그램의 화면은 다음과 같이되어 있습니다.
- 1 단 : 여기에 문자열을 입력합니다
- 2 단 : 입력 된 문자열의 읽기 가명가 표시됩니다
- 3 단 : 입력 된 문자열에 후리가나를 붙여 표시됩니다 (이 부분은 1607/14393 이상)
- 4 단 : 생성 된 읽기 가명에서 얻은 카나 한자 변환 후보를 나열합니다
2 단 ~ 4 단의 출력은 UWP API를 사용하여 얻고 있습니다. 여기에서 사용하는 UWP API는 형태소 분석 을 실시하면서 읽기를 추정합니다. 예를 들어 "수미산 등산 계획」은 「수미산 / 등산 / 계획"이라고 3 개의 형태소로 분할하여 「수미산 / 등산 / 계획 "이라고 읽으을 붙여줍니다. 이 읽기 가명을 취득하는 API의 사용법도 나중에 소개합니다.
이와 같이 기존의 .NET 응용 프로그램에서 UWP API를 사용할 수 있다고해도, 그 때문에 작업이 복잡한 것이었다면 부담없이 이용하거나 수 없습니다. 이번 주제는 거기에 있습니다. 대부분은 아주 쉽게 할 수 있습니다.
쉽게! NuGet에서 도입하는 방법
즉시 해 봅시다. 먼저 Visual Studio를 열고 WPF 프로젝트를 만듭니다 (Windows Forms 및 콘솔 응용 프로그램이든 상관 없습니다).
그러면 NuGet에서 UwpDesktop 를 프로젝트에 도입합니다. Visual Studio 2015에서 도입 절차는 다음과 같습니다.
- 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리 메뉴를 선택
- 열린 NuGet 패키지 관리자 상단의 탭에서 [참조]를 선택합니다 (다음 그림의 ①) 검색 창에 "UwpDesktop"를 입력하고 (②) 검색을 수행 할
- 검색 결과에 "UwpDesktop"가 나오므로 (③), 그것을 선택하여 설치
단지 이만큼 이고 다른 UWP API를 사용한 코딩 수 있습니다.
예를 들어 다음과 같이 MainWindow 클래스 생성자에 코드를 추가하여보십시오.
public partial class MainWindow : Window { public MainWindow () { InitializeComponent (); // 그림 폴더의 파일 목록을 가져 본다 Task.Run (async () => { var files = await Windows.Storage.KnownFolders.PicturesLibrary.GetFilesAsync () ; var myPictures = string.Join ( "\ n", files.Select (f => f.Name)); MessageBox.Show (myPictures); }); } ...... 생략 ......
이제 실행 해 보면 다음 그림과 같이 그림 폴더의 파일 이름 목록이 나타납니다. UWP API는 이렇게 쉽게 이용할 수 있습니다.
이렇게 시원스럽게 사용 버리는은 맥이 좋은 곳 이군요! 그러나이 UwpDesktop 개발이 멈춰 버린 있고, Windows 10 version 1607 / build 14393까지 밖에 지원하지 않습니다. 1703/15063 이후의 API를 이용하고 싶은 경우에는 수동으로 설정됩니다 (후술).
Capability ( "기능")의 선언은 불필요
UWP 패키지하지 않은 .NET Framework 응용 프로그램에서는 UWP의 Capability ( "기능") 선언은 필요하지 않습니다. 위의 예는 그림 폴더에 액세스하는 API를 이용하고 있습니다 만, 만약 UWP 응용 프로그램이라면 패키지 매니페스트 Capability 선언해야 할 곳입니다. 동일한 API를 기존의 데스크톱 응용 프로그램에서 호출하는 경우에는 제한이 걸리지 않습니다 (데스크톱 브리지에서 UWP 패키징 및 제한이 적용됩니다).