공유 프로젝트 코드 공유

공유 프로젝트를 사용하면 다양한 애플리케이션 프로젝트에서 참조하는 공통 코드를 작성할 수 있습니다. 코드는 각 참조하는 프로젝트의 일부로 컴파일되며 플랫폼 특정 기능을 공유 코드 베이스에 통합하는 데 도움이 되는 컴파일러 지시문을 포함할 수 있습니다.

공유 프로젝트(공유 자산 프로젝트라고도 함)를 사용하면 Xamarin 애플리케이션을 비롯한 여러 대상 프로젝트 간에 공유되는 코드를 작성할 수 있습니다.

공유 프로젝트를 참조하는 프로젝트의 하위 집합으로 컴파일할 플랫폼별 코드를 조건부로 포함할 수 있도록 컴파일러 지시문을 지원합니다. 컴파일러 지시문을 관리하고 각 애플리케이션에서 코드가 어떻게 표시되는지 시각화하는 데 도움이 되는 IDE 지원도 있습니다.

과거에 파일 연결을 사용하여 프로젝트 간에 코드를 공유한 경우 공유 프로젝트는 비슷한 방식으로 작동하지만 IDE 지원이 훨씬 향상되었습니다.

공유 프로젝트란?

대부분의 다른 프로젝트 형식과 달리 공유 프로젝트에는 출력이 없습니다(DLL 형식). 대신 코드를 참조하는 각 프로젝트로 컴파일됩니다. 이는 아래 다이어그램에 설명되어 있습니다. 개념적으로 공유 프로젝트의 전체 콘텐츠는 참조하는 각 프로젝트에 "복사"되며 해당 프로젝트의 일부인 것처럼 컴파일됩니다.

Shared Project architecture

공유 프로젝트의 코드에는 다이어그램의 색이 지정된 플랫폼 상자에서 제안하는 코드를 사용하는 애플리케이션 프로젝트에 따라 코드 섹션을 사용하거나 사용하지 않도록 설정하는 컴파일러 지시문이 포함될 수 있습니다.

공유 프로젝트는 자체적으로 컴파일되지 않으며, 다른 프로젝트에 포함할 수 있는 소스 코드 파일의 그룹으로만 존재합니다. 다른 프로젝트에서 참조하는 경우 코드는 해당 프로젝트의 일부로 효과적으로 컴파일됩니다. 공유 프로젝트는 다른 프로젝트 형식(다른 공유 프로젝트 포함)을 참조할 수 없습니다.

Android 애플리케이션 프로젝트는 다른 Android 애플리케이션 프로젝트를 참조할 수 없습니다. 예를 들어 Android 단위 테스트 프로젝트는 Android 애플리케이션 프로젝트를 참조할 수 없습니다. 공유 프로젝트에 대한 자세한 내용을 보려면

Mac용 Visual Studio 연습

이 섹션에서는 Mac용 Visual Studio 사용하여 공유 프로젝트를 만들고 사용하는 방법을 안내합니다. 전체 예제는 공유 프로젝트 예제 섹션을 참조하세요.

공유 프로젝트 만들기

새 공유 프로젝트를 만들려면 새 파일 > 솔루션으로 이동합니다. 또는 기존 솔루션을 마우스 오른쪽 단추로 클릭하고 새 프로젝트 추가 > 를 선택합니다.

New Shared Project

다음 화면에서 프로젝트 이름을 선택하고 만들기를 클릭합니다.

새 공유 프로젝트는 아래에 나와 있습니다. 참조 또는 구성 요소 노드가 없음을 확인합니다. 공유 프로젝트에는 지원되지 않습니다.

Empty Shared Project

공유 프로젝트가 유용하려면 하나 이상의 빌드 가능 프로젝트(예: iOS, Android 애플리케이션 또는 라이브러리 또는 PCL 프로젝트)에서 참조해야 합니다. 공유 프로젝트는 참조하는 항목이 없을 때 컴파일되지 않으므로 다른 항목에서 참조할 때까지 구문(또는 기타) 오류가 강조 표시되지 않습니다.

공유 프로젝트에 대한 참조를 추가하는 것은 일반 라이브러리 프로젝트를 참조하는 것과 동일한 방식으로 수행됩니다. 이 스크린샷은 공유 프로젝트를 참조하는 Xamarin.iOS 프로젝트를 보여줍니다.

Project reference to Shared Project

공유 프로젝트가 다른 라이브러리 또는 애플리케이션에서 참조되면 솔루션을 빌드하고 코드에서 오류를 볼 수 있습니다. 공유 프로젝트가 두 개 이상의 다른 프로젝트에서 참조되면 소스 코드 편집기의 왼쪽 위에 이 파일을 참조하는 프로젝트를 보여 주는 메뉴가 나타납니다.

공유 프로젝트 옵션

공유 프로젝트를 마우스 오른쪽 단추로 클릭하고 옵션을 선택하면 다른 프로젝트 형식보다 적은 설정이 있습니다. 공유 프로젝트는 자체 컴파일되지 않으므로 출력 또는 컴파일러 옵션, 프로젝트 구성, 어셈블리 서명 또는 사용자 지정 명령을 설정할 수 없습니다. 공유 프로젝트의 코드는 이러한 값을 참조하는 모든 값에서 효과적으로 상속합니다.

옵션 화면은 아래에 나와 있습니다. 프로젝트 이름과 기본 네임스페이스는 일반적으로 변경되는 두 가지 설정뿐입니다.

Shared Project Options

공유 프로젝트 예제

Tasky 예제에서는 공유 프로젝트를 사용하여 iOS, Android 및 Windows 전화 애플리케이션에서 사용하는 공통 코드를 포함합니다. SQLite.cs 소스 코드 파일과 TaskRepository.cs 소스 코드 파일은 모두 컴파일러 지시문(예#if __ANDROID__: )을 사용하여 이를 참조하는 각 애플리케이션에 대해 서로 다른 출력을 생성합니다.

전체 솔루션 구조는 아래에 나와 있습니다(각각 Mac용 Visual Studio 및 Visual Studio에서).

Mac용 Visual Studio 해당 프로젝트 형식이 컴파일에 지원되지 않더라도 Windows 전화 프로젝트는 Mac용 Visual Studio 내에서 탐색할 수 있습니다.

실행 중인 애플리케이션은 다음과 같습니다.

iOS, Android, Windows Phone examples

요약

이 문서에서는 공유 프로젝트의 작동 방식, Mac용 Visual Studio Visual Studio에서 공유 프로젝트를 만들고 사용하는 방법을 설명하고, 공유 프로젝트의 작동 방식을 보여 주는 간단한 샘플 애플리케이션을 소개했습니다.