[Xamarin] Xamarin.Forms 공용코드를 .NET Standard Library로 작성하기

2017. 9. 11. 16:54Mobile/Xamarin

원문출처: https://blog.xamarin.com/building-xamarin-forms-apps-net-standard/

.NET Stadnard 라이브러리를 사용하면 우리가 작성한 코드가 좀더 많은 플렛폼에서 동작하게 해줍니다. 또한 더 많은 Base Class Library를 지원합니다. .NET Standard Library를 Xmarin.Forms에서 사용하여 iOS, Android, UWP, macOS에서 동작하는 UI나 공용코드를 개발할 수 있습니다.

이 블로그 포스트에서는 기존 Xamarin.Forms (PCL)프로젝트에서 PCL Profile 대신에 .NET Standard를 사용하는 방법에 대해 다룹니다.

.NET Standard란?

.NET Standard란 .NET API의 정형화된 스펙으로 모든 .NET 런타임에서 동작가능하게 하는 것을 목적으로 하고 있습니다. (모든 .NET 런타임이란 .NET Framework 뿐만 아니라 Mono, .NET Core 등을 말함) PCL Profile에 대해 알고 있는 분들은 PCL Profile과 동일한 목적이 아닌가 의아할 수 있습니다.

하지만 .NET Standard Library는 .NET Standard를 지원하는 런타임(.NET Core, ASP.NET Core, Xamarin 등)에서 동작할 수 있으며, 추가적으로 확장된 .NET Base Class Library를 사용할 수 있으며, 앞으로 더 많은 플렛폼을 지원합니다. 더불어 PCL Profile에서 겪었던 복잡한 버전 설정 등의 일을 하지 않아도 됩니다.

Xamarin.Fomrs로 .NET Standard 사용하기

Xamarin.Forms 2.3.5-pre release부터 .NET Standard를 지원하기 시작합니다. 따라서 기존의 Shared Project, Portable Class Library 뿐만 아니라 .NET Standard Library를 사용하여 Xamarin 공통코드를 작성할 수 있습니다.

Xamarin 프로젝트 생성하기

이미 .NET Standard를 사용할 Xamarin.Forms 프로젝트가 있다면 이 단계를 건너뛰셔도 됩니다.

Visual Studio에서 File -> New Project -> Cross-Platform -> Cross-Platform App을 선택해주세요. Master Detail 템플릿을 선택하신 후 OK를 클릭해주세요. 그러면 iOS, Android, UWP를 위한 Xmarin.Forms 프로젝트가 템플릿으로부터 생성됩니다.

만약 Visual Studio for Mac를 사용하신 다면 File -> New -> Multiplatform -> Forms App를 통해서 생성하실 수 있습니다.

.NET Standard Library 추가하기

Visual Studio 2017에서 솔루션을 우클릭하신 후  Add -> New Project를 클릭해주세요. .NET Standard 섹션에서 Class Library (.NET Standard) 항목을 선택하시면 .NET Standard Library 프로젝트를 생성하실 수 있습니다.

Mac 사용자는 Multiplatform -> Library -> .NET Standard Library에서 생성하실 수 있습니다. Visual Studio 2015를 사용하신 다면 시작하기 전에 가이드를 꼭 참고해주세요.

Xamarin.Forms 추가하기

Portable Class Library 프로젝트 처럼 .NET Standard Library 프로젝트에도 NuGet을 이용할 수 있습니다. NuGet Package Manager를 열고 Xamarin.Forms를 검색하셔서 .NET Standard Library 프로젝트에 추가해주세요.

현재 포스트를 작성하는 시점에는 Xamarin.Forms 2.3.5-pre release만 .NET Standard를 지원합니다. 따라서 Xamarin.Forms 버전이 유효한지 확인해주세요. NuGet에서 Pre-release를 검색하여 설치하려면 반드시 Incude prerelease 체크박스를 체크해야합니다.

다른 Xamarin 프로젝트도 (iOS, Anroid, UWP 등) 동일한 버전의 Xamarin.Forms를 설치해주세요.

위의 과정을 마치면 .NET Standard Library에 공용코드를 작성하신 후 빌드하시면 됩니다. 빌드를 마치면 생성된 DLL을 iOS, Anroid, UWP 등의 Xamarin 프로젝트에 추가해 주세요.

기존의 Xamarin.Forms (PCL) 프로젝트에서 새롭게 생성된 .NET Standard Library로 파일을 복사해서 옳겨주시면 .NET Standard Library를 사용하는 Xamarin.Forms (PCL) 프로젝트가 완성됩니다.