수동으로 Xamarin용 NuGet 패키지 만들기
이 페이지에는 Xamarin 플랫폼을 대상으로 하는 NuGet 패키지를 빌드하는 데 도움이 되는 몇 가지 팁이 포함되어 있습니다.
참고 항목
Xamarin Studio 6.2(및 Mac용 Visual Studio)에는 PCL, .NET Standard 또는 공유 프로젝트에서 NuGet 패키지를 자동으로 생성하는 기능이 포함되어 있습니다. 자세한 내용은 코드 공유용 다중 플랫폼 라이브러리 가이드를 참조하세요.
NuGet 패키지 Xamarin 프로필
NuGet 웹 사이트의 여러 .NET Framework 버전 및 프로필 지원에서는 다양한 Microsoft 프레임워크 및 프로필을 지원하는 방법을 설명하지만 Xamarin에서 사용하는 대상 프레임워크 이름은 포함하지 않습니다.
현재 사용 중인 기본 Xamarin 대상 프레임워크는 다음과 같습니다.
- MonoAndroid - Xamarin.Android
- Xamarin.iOS - Xamarin.iOS 통합 API (64비트 지원)
- Xamarin.Mac - Xamarin.iOS 및 Xamarin.Android API 표면과 동일한 Xamarin.Mac의 모바일 프로필입니다.
이전 iOS 클래식 API의 대상도 있습니다.
- MonoTouch - iOS 클래식 API
이러한 모든 것을 대상으로 하는 .nuspec 파일은 다음과 같습니다.
<files>
<file src="Mac\bin\Release\*.dll" target="lib\Xamarin.Mac20" />
<file src="iOS\bin\Release\*.dll" target="lib\Xamarin.iOS10" />
<file src="Android\bin\Release\*.dll" target="lib\MonoAndroid10" />
<file src="iOSClassic\bin\Release\*.dll" target="lib\MonoTouch10" />
</files>
위의 내용은 이식 가능한 클래스 라이브러리를 무시합니다.
대부분의 .nuspec 파일은 대상 프레임워크의 버전 번호를 지정하지만 어셈블리가 해당 대상 프레임워크의 모든 버전에서 작동하는 경우 선택 사항입니다. 따라서 대상이 lib\MonoAndroid인 경우 이는 모든 버전의 Xamarin.Android에서 작동한다는 것을 의미합니다.
소수점 없이 숫자 집합으로 버전을 지정하거나 소수점을 사용하여 버전을 지정할 수 있습니다. 소수점이 없으면 NuGet은 각 숫자를 가져와서 각 숫자 사이에 '.'를 삽입하여 버전으로 변환합니다.
위의 "MonoAndroid10"은 "Android 1.0"을 의미합니다. 즉, 프로젝트의 대상 프레임워크 는 MonoAndroid 버전 1.0 이상이어야 합니다. 버전은 프로젝트 파일의 <TargetFrameworkVersion>
요소에 지정됩니다.
명확히 하기:
- MonoAndroid403 은 Android 4.0.3 이상과 일치합니다(예: API 수준 15).
- Xamarin.iOS10 은 Xamarin.iOS 1.0 이상과 일치합니다.
- Xamarin.iOS1.0 은 Xamarin.iOS 1.0 이상과도 일치합니다.
플랫폼 종속성이 있는 PCL NuGets
PCL 프로필은 액세스할 수 있는 .NET Framework API에서 제한되며 플랫폼별 코드에 액세스할 수 없습니다. 이러한 타사 링크는 PCL 및 네이티브 API를 사용하여 Xamarin 및 기타 플랫폼에 대한 호환성을 제공하는 NuGet 패키지를 만들기 위한 다양한 방법을 설명합니다.
NuGet 대상 이름을 사용하는 PCL 프로필의 이 외부 목록도 유용한 참조입니다.
예제
참조할 수 있는 몇 가지 오픈 소스 예제:
- ModernHttpClient – System.Net.Http를 사용하여 앱을 작성하지만 이 라이브러리를 삭제하면 훨씬 더 빠르게(원본 보기) 됩니다.
- Splat – 플랫폼 간 작업을 만드는 라이브러리입니다(원본 보기).
- NGraphics - .NET(뷰 원본)에서 벡터 그래픽을 렌더링하기 위한 플랫폼 간 라이브러리입니다.