여러 플랫폼에서 코드 공유Sharing code on multiple platforms

이러한 문서에서는 Windows, Android, iOS 등을 비롯 하 여 플랫폼 간에 코드를 공유 하는 데 사용할 수 있는 다양 한 옵션을 설명 합니다.These articles explain the different options available for sharing code across platforms, including Windows, Android, iOS, and more.

코드 공유 개요Code sharing overview

.NET Standard 라이브러리 및 공유 프로젝트를 포함 하 여 Xamarin 프로젝트에 사용할 수 있는 다양 한 코드 공유 옵션에 대해 알아봅니다.Learn about the different code sharing options available for Xamarin projects, including .NET Standard Libraries and Shared Projects. 이식 가능한 클래스 라이브러리도 지원 되지만 .NET Standard를 위해 더 이상 사용 되지 않는 것으로 간주 됩니다.Portable Class Libraries are also supported, however they are considered deprecated in favor of .NET Standard.

.NET 표준.NET Standard

.NET Standard는 플랫폼 간에 코드를 공유 하는 데 기본 설정 된 옵션입니다..NET Standard is the preferred option for sharing code across platforms. 코드는 특정 버전에 대해 빌드됩니다 (2.0 기존 .NET Framework 코드와의 최상의 API 호환성을 제공). 그런 다음 해당 수준을 지 원하는 다른 프로젝트에서 사용 될 수 있습니다.Code is built against a specific version (2.0 provides the best API compatibility with existing .NET Framework code) and can then be consumed by other projects that support that level or higher. .NET Standard 프로젝트는 Visual Studio 2019 및 Mac 용 Visual Studio 2019에서 모두 지원 됩니다..NET Standard projects are supported in both Visual Studio 2019 and Visual Studio 2019 for Mac.

공유 프로젝트Shared Projects

공유 프로젝트를 사용 하면 다양 한 응용 프로그램 프로젝트에서 참조 하는 공통 코드를 작성할 수 있습니다.Shared Projects let you write common code that is referenced by a number of different application projects. 이 코드는 각 참조 하는 프로젝트의 일부로 컴파일되며, 공유 코드 베이스에 플랫폼별 기능을 통합 하는 데 도움이 되는 컴파일러 지시문을 포함할 수 있습니다.The code is compiled as part of each referencing project and can include compiler directives to help incorporate platform-specific functionality in the shared code base. 이 문서에서는 공유 프로젝트의 작동 방식 및 Xamarin 프로젝트를 사용 하 여 공유 프로젝트를 만들고 사용 하는 방법을 설명 합니다.This article discusses how Shared Projects work and how to create and use them with Xamarin projects.

이식 가능한 클래스 라이브러리Portable Class Libraries

이식 가능한 클래스 라이브러리 프로젝트를 사용 하면 공유 코드를 포함 하는 어셈블리를 빌드하고 배포 하 여 여러 플랫폼에서 실행할 수 있습니다.Portable Class Library projects let you build and distribute assemblies that contain shared code to run on multiple platforms. 이식 가능한 클래스 라이브러리 (또는 "PCL")를 만들려면 먼저 대상으로 할 플랫폼을 선택 하 고 해당 플랫폼에 대해 정의 된 프로필에서 사용할 수 있는 .NET Framework의 하위 집합에 대 한 코드를 작성 합니다.To create a Portable Class Library (or "PCL") you first select which platforms to target, then write code against a sub-set of the .NET Framework that is available in the profile defined for those platforms. PCLs는 최신 버전의 Visual Studio에서 더 이상 사용 되지 않는 것으로 간주 됩니다. 개발자는 .NET Standard 2.0를 대신 사용 하는 것이 좋습니다.PCLs are considered to be deprecated in the latest versions of Visual Studio; developers are encouraged to use .NET Standard 2.0 instead.

NuGet 프로젝트: 코드 공유용 다중 플랫폼 라이브러리NuGet projects: Multiplatform Libraries for code sharing

NuGet 패키지는 PCL 또는 .NET standard 프로젝트에서 자동으로 생성 될 수 있습니다. 및 공유 프로젝트를 별도의 NuGet 프로젝트 형식을 사용 하 여 "bait and switch" NuGet 패키지로 패키지할 수 있습니다.NuGet packages can be automatically generated from PCL or .NET standard projects; and Shared Projects can be packaged into "bait and switch" NuGet packages using the separate NuGet project type. 이 섹션에서는 각 코드 공유 시나리오에 대 한 NuGet 패키지를 만드는 방법을 설명 합니다.This section explains how to create NuGet packages for each code-sharing scenario.

Xamarin에 대 한 NuGet 패키지 수동 만들기Manually creating NuGet packages for Xamarin

Xamarin 플랫폼에서 작동 하는 NuGet 패키지를 만들기 위한 팁입니다.Tips for creating NuGet packages that work with the Xamarin platform.

플랫폼 간 XamarinC++ 프로젝트에서 C/라이브러리 사용Use C/C++ Libraries in Cross-Platform Xamarin Projects

이 기법을 사용 하면 C/C++ 라이브러리의 진화, NuGet의 C# 바인딩 및 Xamarin 응용 프로그램을 분리할 수 있습니다.This technique allows you to decouple the evolution of your C/C++ libraries, a C# binding in a NuGet, and your Xamarin applications. 기능은 네이티브 플랫폼 C/C++ 라이브러리에서 제공 하지만 모든 플랫폼별 코드는 최종 Xamarin 응용 프로그램에서 격리 되므로 코드 중복 없이 가장 높은 성능을 사용할 수 있습니다.Functionality is provided by the native-platform C/C++ library, but all platform-specific code is isolated from the final Xamarin application(s), allowing the highest-possible performance with no code duplication.