ZielframeworksTarget frameworks

Wenn Sie ein Framework in einer App oder Bibliothek als Ziel verwenden, geben Sie mehrere APIs an, die Sie für die App oder Bibliothek verfügbar machen möchten.When you target a framework in an app or library, you're specifying the set of APIs that you'd like to make available to the app or library. Sie geben das Zielframework mit Zielframeworkmonikers (TFMs) in Ihrer Projektdatei an.You specify the target framework in your project file using Target Framework Monikers (TFMs).

Eine App oder Bibliothek kann eine Version des .NET Standards als Ziel verwenden.An app or library can target a version of .NET Standard. .NET Standard-Versionen stellen standardisierte APIs in allen .NET-Implementierungen dar..NET Standard versions represent standardized sets of APIs across all .NET implementations. Eine Bibliothek kann z.B. NET Standard 1.6 als Ziel verwenden und Zugriff auf APIs erhalten, die sowohl in .NET Core und .NET Framework mit der gleichen Codebasis funktionieren.For example, a library can target .NET Standard 1.6 and gain access to APIs that function across .NET Core and .NET Framework using the same codebase.

Eine App oder Bibliothek kann auch eine spezifische .NET-Implementierung als Ziel verwenden, um Zugriff auf implementierungsspezifische APIs zu erhalten.An app or library can also target a specific .NET implementation to gain access to implementation-specific APIs. Eine App, die beispielsweise Xamarin.iOS als Ziel verwendet (z.B. Xamarin.iOS10), erhält Zugriff auf von Xamarin bereitgestellte API-Wrapper für iOS 10, und eine App, die die universelle Windows-Plattform (UWP, uap10.0) als Ziel verwendet, erhält Zugriff auf APIs, die für Geräte kompilieren, die unter Windows 10 ausgeführt werden.For example, an app that targets Xamarin.iOS (for example, Xamarin.iOS10) gets access to Xamarin-provided iOS API wrappers for iOS 10, or an app that targets the Universal Windows Platform (UWP, uap10.0) has access to APIs that compile for devices that run Windows 10.

Für einige Zielplattformen (z.B. .NET Framework) werden die APIs von den Assemblys definiert, die das Framework auf einem System installiert, und zu denen möglicherweise Anwendungsframework-APIs zählen (z.B. ASP.NET).For some target frameworks (for example, the .NET Framework), the APIs are defined by the assemblies that the framework installs on a system and may include application framework APIs (for example, ASP.NET).

Für paketbasierte Zielframeworks (z.B. .NET Standard und .NET Core) werden die APIs von den Paketen definiert, die in der App oder der Bibliothek enthalten sind.For package-based target frameworks (for example, .NET Standard and .NET Core), the APIs are defined by the packages included in the app or library. Ein Metapaket ist ein NuGet-Paket ohne eigenen Inhalt, das aus einer Liste von Abhängigkeiten oder Paketen besteht.A metapackage is a NuGet package that has no content of its own but is a list of dependencies (other packages). Ein Zielframework, das auf einem NuGet-Paket basiert, gibt implizit ein Metapaket an, das auf alle Pakete verweist, aus denen das Framework besteht.A NuGet package-based target framework implicitly specifies a metapackage that references all the packages that together make up the framework.

Neueste ZielframeworkversionenLatest target framework versions

Die folgende Tabelle listet die häufigsten Zielframeworks auf, wie auf diese verwiesen wird und welche Version von .NET Standard von ihnen implementiert wird.The following table defines the most common target frameworks, how they're referenced, and which version of the .NET Standard they implement. Diese Zielframeworkversionen sind die neuesten stabilen Versionen.These target framework versions are the latest stable versions. Vorabversionen werden nicht angezeigt.Pre-release versions aren't shown. Ein TFM ist ein standardisiertes Tokenformat zum Angeben des Zielframeworks einer .NET-App oder -Bibliothek.A Target Framework Moniker (TFM) is a standardized token format for specifying the target framework of a .NET app or library.

ZielframeworkTarget Framework Letzte VersionLatest Version Zielframeworkmoniker (Target Framework Moniker, TFM)Target Framework Moniker (TFM) ImplementiertImplemented
.NET-Standardversion.NET Standard Version
.NET-Standard.NET Standard 2.02.0 netstandard2.0netstandard2.0 Nicht zutreffendN/A
.NET Core-Anwendung.NET Core Application 2.02.0 netcoreapp2.0netcoreapp2.0 2.02.0
.NET Framework.NET Framework 4.7.14.7.1 net471net471 2.02.0

Unterstützte ZielframeworkversionenSupported target framework versions

Auf ein Zielframework wird normalerweise mit einem TFM verwiesen.A target framework is typically referenced by a TFM. In der folgenden Tabelle werden die vom .NET Core SDK und dem NuGet-Client unterstützten Zielframeworks aufgelistet.The following table shows the target frameworks supported by the .NET Core SDK and the NuGet client. Äquivalente werden in Klammern angegeben.Equivalents are shown within brackets. win81 ist z.B ein äquivalenter TFM von netcore451.For example, win81 is an equivalent TFM to netcore451.

ZielframeworkTarget Framework TFMTFM
.NET-Standard.NET Standard netstandard1.0netstandard1.0
netstandard1.1netstandard1.1
netstandard1.2netstandard1.2
netstandard1.3netstandard1.3
netstandard1.4netstandard1.4
netstandard1.5netstandard1.5
netstandard1.6netstandard1.6
netstandard2.0netstandard2.0
.NET Core.NET Core netcoreapp1.0netcoreapp1.0
netcoreapp1.1netcoreapp1.1
netcoreapp2.0netcoreapp2.0
.NET Framework.NET Framework net11net11
net20net20
net35net35
net40net40
net403net403
net45net45
net451net451
net452net452
net46net46
net461net461
net462net462
net47net47
net471net471
Windows StoreWindows Store netcore [netcore45]netcore [netcore45]
netcore45 [win] [win8]netcore45 [win] [win8]
netcore451 [win81]netcore451 [win81]
.NET Micro Framework.NET Micro Framework netmfnetmf
SilverlightSilverlight sl4sl4
sl5sl5
Windows PhoneWindows Phone wp [wp7]wp [wp7]
wp7wp7
wp75wp75
wp8wp8
wp81wp81
wpa81wpa81
Universelle Windows-PlattformUniversal Windows Platform uap [uap10.0]uap [uap10.0]
uap10.0 [win10] [netcore50]uap10.0 [win10] [netcore50]

Angeben von ZielframeworksHow to specify target frameworks

Zielframeworks geben Sie in Ihrer Projektdatei an.Target frameworks are specified in your project file. Wenn ein einzelnes Framework angegeben wird, verwenden Sie das Element TargetFramework.When a single target framework is specified, use the TargetFramework element. Die folgende Projektdatei einer Konsolen-App veranschaulicht, wie Sie .NET Core 2.0 als Ziel verwenden können:The following console app project file demonstrates how to target .NET Core 2.0:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

</Project>

Wenn Sie mehrere Zielframeworks angeben, können Sie bedingt auf Assemblys für jedes Zielframework verweisen.When you specify multiple target frameworks, you may conditionally reference assemblies for each target framework. Sie können in Ihrem Code bedingt mit diesen Assemblys kompilieren, indem Sie die Präprozessorsymbole mit wenn-dann-sonst-Logik verwenden.In your code, you can conditionally compile against those assemblies by using preprocessor symbols with if-then-else logic.

Die folgende Bibliotheksprojektdatei verwendet APIs von .NET Standard (netstandard1.4) und von .NET Framework (net40 und net45) als Ziel.The following library project file targets APIs of .NET Standard (netstandard1.4) and APIs of the .NET Framework (net40 and net45). Verwenden Sie das Element TargetFrameworks im Plural für mehrer Zielframeworks.Use the plural TargetFrameworks element with multiple target frameworks. Beachten Sie, dass die Condition-Attribute implementierungsspezifische Pakete enthalten, wenn die Bibliothek für die zwei .NET Framework-TFMs kompiliert wird:Note how the Condition attributes include implementation-specific packages when the library is compiled for the two .NET Framework TFMs:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard1.4;net40;net45</TargetFrameworks>
  </PropertyGroup>

  <!-- Conditionally obtain references for the .NET Framework 4.0 target -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
    <Reference Include="System.Net" />
  </ItemGroup>

  <!-- Conditionally obtain references for the .NET Framework 4.5 target -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Threading.Tasks" />
  </ItemGroup>

</Project>

Sie schreiben in Ihrer Bibliothek oder App bedingten zu kompilierenden Code für jedes Zielframework:Within your library or app, you write conditional code to compile for each target framework:

public class MyClass
{
    static void Main()
    {
#if NET40
        Console.WriteLine("Target framework: .NET Framework 4.0");
#elif NET45  
        Console.WriteLine("Target framework: .NET Framework 4.5");
#else
        Console.WriteLine("Target framework: .NET Standard 1.4");
#endif
    }
}

Das Buildsystem beachtet Präprozessorsymbole, die Zielframeworks darstellen, die in der Tabelle Unterstützte Zielframeworkversionen aufgelistet sind.The build system is aware of preprocessor symbols representing the target frameworks shown in the Supported target framework versions table. Wenn Sie ein Symbol verwenden, das einen TFM von .NET Standard oder .NET Core darstellt, ersetzen Sie den Punkt (.) durch einen Unterstrich (_), und ändern Sie Klein- in Großbuchstaben (das Symbol für netstandard1.4 ist z.B. NETSTANDARD1_4).When using a symbol that represents a .NET Standard or .NET Core TFM, replace the dot with an underscore and change lowercase letters to uppercase (for example, the symbol for netstandard1.4 is NETSTANDARD1_4).

Hier finden Sie eine vollständige Liste der Präprozessorsymbole für .NET Core-Zielframeworks:The complete list of preprocessor symbols for .NET Core target frameworks is:

Zielframeworks Symbole
.NET Framework NET20, NET35, NET40, NET45, NET451, NET452, NET46, NET461, NET462, NET47, NET471
.NET-Standard NETSTANDARD1_0, NETSTANDARD1_1, NETSTANDARD1_2, NETSTANDARD1_3, NETSTANDARD1_4, NETSTANDARD1_5, NETSTANDARD1_6, NETSTANDARD2_0
.NET Core NETCOREAPP1_0, NETCOREAPP1_1, NETCOREAPP2_0

Veraltete ZielframeworksDeprecated target frameworks

Die folgenden Zielframeworks sind veraltet.The following target frameworks are deprecated. Pakete, die für diese Zielframeworks ausgelegt sind, sollten zur jeweiligen Ersetzung migriert werden.Packages targeting these target frameworks should migrate to the indicated replacements.

Veralteter TFMDeprecated TFM ErsetzungReplacement
aspnet50aspnet50
aspnetcore50aspnetcore50
dnxcore50dnxcore50
dnxdnx
dnx45dnx45
dnx451dnx451
dnx452dnx452
netcoreappnetcoreapp
dotnetdotnet
dotnet50dotnet50
dotnet51dotnet51
dotnet52dotnet52
dotnet53dotnet53
dotnet54dotnet54
dotnet55dotnet55
dotnet56dotnet56
netstandardnetstandard
netcore50netcore50 uap10.0uap10.0
winwin netcore45netcore45
win8win8 netcore45netcore45
win81win81 netcore451netcore451
win10win10 uap10.0uap10.0
winrtwinrt netcore45netcore45

Siehe auchSee also

Pakete, Metapakete und FrameworksPackages, Metapackages and Frameworks
Entwickeln von Bibliotheken mit plattformübergreifenden ToolsDeveloping Libraries with Cross Platform Tools
.NET-Standard.NET Standard
.NET Core-Versionskontrolle.NET Core Versioning
dotnet/standard-GitHub-Repositorydotnet/standard GitHub repository
GitHub-Repository NuGet-Tools)NuGet Tools GitHub Repository
Frameworkprofile in .NETFramework Profiles in .NET