다음을 통해 공유


MSBuild 대상 프레임워크 및 대상 플랫폼

.NET Framework의 특정 버전인 대상 프레임워크 및 특정 소프트웨어 아키텍처인 대상 플랫폼에서 실행되도록 프로젝트를 빌드할 수 있습니다. 예를 들어 80x86 프로세서 제품군("x86")과 호환되는 32비트 플랫폼의 .NET Framework 2.0에서 실행되도록 애플리케이션을 대상으로 지정할 수 있습니다. 대상 프레임워크와 대상 플랫폼의 조합은 대상 컨텍스트로 불립니다.

중요합니다

이 문서에서는 대상 프레임워크를 지정하는 이전 방법을 보여줍니다. SDK 스타일 프로젝트는 netstandard와 같은 다양한 TargetFrameworks를 사용하도록 설정합니다. 자세한 내용은 대상 프레임워크를 참조하세요.

대상 프레임워크 및 프로필

대상 프레임워크는 프로젝트가 실행되도록 빌드된 특정 버전의 .NET Framework입니다. 대상 프레임워크의 사양은 해당 버전의 프레임워크에만 적용되는 컴파일러 기능 및 어셈블리 참조를 사용하도록 설정하기 때문에 필요합니다.

현재 다음 버전의 .NET Framework는 사용할 수 있지만 일부는 더 이상 Microsoft에서 지원되지 않으며 일부는 더 이상 지원되지 않을 이후 날짜를 계획했습니다. 최신 지원 정보는 .NET Framework를 참조하세요.

  • .NET Framework 2.0(Visual Studio 2005에 포함)

  • .NET Framework 3.0(Windows Vista에 포함)

  • .NET Framework 3.5(Visual Studio 2008에 포함)

  • .NET Framework 4.0

  • .NET Framework 4.5.2

  • .NET Framework 4.6(Visual Studio 2015에 포함됨)

  • .NET Framework 4.6.1

  • .NET Framework 4.6.2

  • .NET Framework 4.7

  • .NET Framework 4.7.1

  • .NET Framework 4.7.2

  • .NET Framework 4.8

.NET Framework 버전은 각각 참조할 수 있는 어셈블리 목록에서 서로 다릅니다. 예를 들어 프로젝트가 .NET Framework 버전 3.0 이상을 대상으로 하지 않는 한 WPF(Windows Presentation Foundation) 애플리케이션을 빌드할 수 없습니다.

대상 프레임워크는 프로젝트 파일의 TargetFrameworkVersion 속성에 지정됩니다. Visual Studio IDE(통합 개발 환경)의 프로젝트 속성 페이지를 사용하여 프로젝트의 대상 프레임워크를 변경할 수 있습니다. 자세한 내용은 방법: .NET Framework 버전 대상 지정을 참조하세요. 사용 가능한 값 TargetFrameworkVersion 은 ,, v2.0,v3.0, v4.0v3.5, v4.5.2, v4.6v4.6.1v4.6.2, v4.7v4.7.1및 .v4.7.2v4.8

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

대상 프로필은 대상 프레임워크의 하위 집합입니다. 예를 들어 .NET Framework 4 클라이언트 프로필에는 MSBuild 어셈블리에 대한 참조가 포함되지 않습니다.

비고

대상 프로필은 이식 가능한 클래스 라이브러리에만 적용됩니다.

대상 프로필은 프로젝트 파일의 TargetFrameworkProfile 속성에 지정됩니다. IDE의 프로젝트 속성 페이지에서 대상 프레임워크 컨트롤을 사용하여 대상 프로필을 변경할 수 있습니다.

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>

대상 플랫폼

플랫폼은 특정 런타임 환경을 정의하는 하드웨어와 소프트웨어의 조합입니다. 예를 들면 다음과 같습니다.

  • x86 는 Intel 80x86 프로세서 또는 해당 프로세서에서 실행되는 32비트 Windows 운영 체제를 지정합니다.
  • x64 는 Intel x64 프로세서 또는 해당 프로세서에서 실행되는 64비트 Windows 운영 체제를 지정합니다.
  • anycpu 는 모든 플랫폼에서 실행할 수 있도록 구성된 출력을 지정합니다. 애플리케이션은 가능할 때마다 64비트로 실행되고 해당 모드를 사용할 수 있을 때만 32비트로 전환됩니다.
  • anycpu32bitpreferred 는 모든 플랫폼에서 실행되는 출력을 지정합니다. 애플리케이션은 64비트와 32비트 애플리케이션을 모두 지원하는 시스템에서 32비트로 실행됩니다.
  • Xbox 는 Microsoft Xbox 360 플랫폼을 지정합니다.
  • ARM 는 ARM(Advanced RISC Machine) 프로세서가 있는 컴퓨터에서 실행할 어셈블리를 컴파일합니다.
  • ARM64 는 A64 명령 집합을 지원하는 ARM(Advanced RISC Machine) 프로세서가 있는 컴퓨터의 64비트 CLR에서 실행되도록 어셈블리를 컴파일합니다.

대상 플랫폼은 프로젝트가 실행되도록 빌드된 특정 플랫폼입니다. 대상 플랫폼은 프로젝트 파일의 PlatformTarget 빌드 속성에 지정됩니다. IDE에서 프로젝트 속성 페이지 또는 Configuration Manager 를 사용하여 대상 플랫폼을 변경할 수 있습니다.

<PropertyGroup>
   <PlatformTarget>x86</PlatformTarget>
</PropertyGroup>

PlatformTarget 생성할 출력을 결정하기 위해 값이 컴파일러에 전달됩니다. C# 프로젝트의 경우 C# 컴파일러 옵션 -platform에 매핑됩니다. 플랫폼 옵션은 컴파일러 옵션인 PlatformTarget에서 자세히 설명합니다.

대상 구성은 대상 플랫폼의 하위 집합입니다. 예를 들어 구성에는 x86Debug 대부분의 코드 최적화가 포함되지 않습니다. 대상 구성은 프로젝트 파일의 Configuration 빌드 속성에 지정됩니다. 프로젝트 속성 페이지 또는 Configuration Manager를 사용하여 대상 구성을 변경할 수 있습니다.

<PropertyGroup>
   <PlatformTarget>x86</PlatformTarget>
   <Configuration>Debug</Configuration>
</PropertyGroup>