Kerangka kerja target

NuGet menggunakan referensi kerangka kerja target di berbagai tempat untuk secara khusus mengidentifikasi dan mengisolasi komponen yang bergantung pada kerangka kerja dari paket:

  • file proyek: Untuk proyek bergaya SDK, .csproj berisi referensi kerangka kerja target.
  • Manifes .nuspec: Paket dapat menunjukkan paket yang berbeda untuk disertakan dalam proyek tergantung pada kerangka kerja target proyek.
  • Nama folder .nupkg: Folder di dalam folder paket lib dapat dinamai sesuai dengan kerangka kerja target, yang masing-masing berisi DLL dan konten lain yang sesuai dengan kerangka kerja tersebut.
  • packages.config: Atribut targetframework dependensi menentukan varian paket yang akan diinstal.

Untuk daftar kanonis semua kerangka kerja target yang didukung dan sintaks TFM-nya, lihat Kerangka kerja target dalam proyek bergaya SDK.

Nilai TargetFramework adalah alias

Properti TargetFramework dalam file proyek adalah nama yang mudah diingat — alias — yang akan diterjemahkan ke dalam identitas kerangka kerja kanonis. .NET SDK melakukan terjemahan ini dengan mengatur TargetFrameworkMoniker (TFM), dan jika berlaku, TargetPlatformMoniker properti .

Misalnya, saat Anda menulis <TargetFramework>net10.0-windows</TargetFramework>, .NET SDK menerjemahkannya ke dalam:

  • TargetFrameworkMoniker = .NETCoreApp,Version=v10.0
  • TargetPlatformMoniker = Windows,Version=7.0

NuGet menggunakan properti moniker ini — bukan TargetFramework string — untuk pemeriksaan kompatibilitas paket. Ini berarti nilai itu TargetFramework sendiri dapat berupa string apa pun, selama properti moniker diatur dengan benar. Misalnya, proyek berikut valid:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>banana</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetFramework)' == 'banana' ">
    <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
    <TargetFrameworkMoniker>.NETCoreApp,Version=v10.0</TargetFrameworkMoniker>
  </PropertyGroup>
</Project>

Proyek ini memulihkan dan membangun untuk .NET 10.0, meskipun nilainya TargetFramework adalah banana. .NET SDK sudah bergantung pada mekanisme alias ini untuk TFM khusus OS seperti net8.0-ios dan net8.0-android, di mana TFM pendek diterjemahkan ke dalam moniker penuh dengan informasi platform.

Multi-penargetan dengan kerangka kerja duplikat

Dimulai dengan NuGet 7.6 / .NET SDK 10.0.300, beberapa TargetFrameworks alias dapat mengatasi kerangka kerja efektif yang sama. Ini memungkinkan skenario seperti build multi-RID dan penargetan ekstensi multi-versi. Untuk detail tentang cara kerjanya dengan pemulihan, paket, kunci file, dan referensi proyek, lihat Menargetkan beberapa kerangka kerja.

Kerangka kerja yang didukung

Kerangka kerja biasanya dirujuk oleh moniker kerangka kerja target pendek atau TFM. Dalam .NET Standard ini juga digeneralisasi ke TxM untuk memungkinkan referensi tunggal ke beberapa kerangka kerja.

Nota

Kode sumber klien NuGet yang menghitung tabel di bawah ini ditemukan di lokasi berikut:

Klien NuGet mendukung kerangka kerja dalam tabel di bawah ini. Setara ditampilkan dalam tanda kurung siku []. Perhatikan bahwa beberapa alat, seperti dotnet, mungkin menggunakan variasi TFM kanonis dalam beberapa file. Misalnya, dotnet pack menggunakan .NETCoreApp2.0 dalam .nuspec file daripada netcoreapp2.0. Berbagai alat klien NuGet menangani variasi ini dengan benar, tetapi Anda harus selalu menggunakan TFM kanonis saat mengedit file secara langsung.

Nama Singkatan TFM/TxM
.NET Framework Bersih net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Microsoft Store (Windows Store) netcore netcore [netcore45]
netcore45 [win, win8]
netcore451 [win81]
netcore50
.NET MicroFramework netmf netmf
Windows menang win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (tidak didukung oleh Platform Windows 10)
Silverlight Sl sl4
sl5
Windows Phone (SL) Wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
Platform Windows Universal uap uap [uap10.0]
uap10.0
uap10.0.xxxxxx (di mana 10.0.xxxxxx adalah versi min platform target dari aplikasi yang mengonsumsi)
.NET Standar netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (dan .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
Bersih net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
Tizen tizen tizen3
tizen4
Native pribumi pribumi

Kerangka kerja yang tidak digunakan lagi

Kerangka kerja berikut tidak digunakan lagi. Paket yang menargetkan kerangka kerja ini harus bermigrasi ke pengganti yang ditunjukkan.

Kerangka kerja yang tidak digunakan lagi Replacement
aspnet50 netcoreapp
aspnetcore50
dnxcore50
dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt menang

Precedence

Sejumlah kerangka kerja terkait dan kompatibel satu sama lain, tetapi belum tentu setara:

Kerangka kerja Dapat menggunakan
uap (Universal Windows Platform) Windows 8.1
wpa81
netcore50
win (Microsoft Store) winrt

NET Standard

.NET Standard menyederhanakan referensi antara kerangka kerja yang kompatibel dengan biner, memungkinkan satu kerangka kerja target untuk mereferensikan kombinasi orang lain. (Untuk latar belakang, lihat .NET Primer.)

NuGet Get Nearest Framework Tool mensimulasikan apa yang digunakan NuGet untuk memilih satu kerangka kerja dari banyak aset kerangka kerja yang tersedia dalam paket berdasarkan kerangka kerja proyek.

Rangkaian dotnet moniker harus digunakan dalam NuGet 3.3 dan yang lebih lama; netstandard sintaks moniker harus digunakan dalam v3.4 dan yang lebih baru.

Pustaka Kelas Portabel

Peringatan

PCL tidak disarankan. Meskipun PCL didukung, penulis paket harus mendukung netstandard sebagai gantinya. Standar Platform .NET adalah evolusi PCL dan mewakili portabilitas biner di seluruh platform menggunakan satu moniker yang tidak terkait dengan pustaka statis seperti moniker portabel-a+b+c .

Untuk menentukan kerangka kerja target yang mengacu pada beberapa kerangka kerja target anak, portable kata kunci menggunakan untuk mengawali daftar kerangka kerja yang dirujuk. Hindari secara buatan termasuk kerangka kerja tambahan yang tidak dikompilasi secara langsung karena dapat menyebabkan efek samping yang tidak diinginkan dalam kerangka kerja tersebut.

Kerangka kerja tambahan yang ditentukan oleh pihak ketiga memberikan kompatibilitas dengan lingkungan lain yang dapat diakses dengan cara ini. Selain itu, ada nomor profil singkat yang tersedia untuk mereferensikan kombinasi kerangka kerja terkait ini sebagai Profile#, tetapi ini bukan praktik yang disarankan untuk menggunakan angka-angka ini karena mengurangi keterbacaan folder dan .nuspec.

Profil # Kerangka kerja Nama lengkap .NET Standar
Profil2 . NETFramework 4.0 portable-net40+win8+sl4+wp7
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
Profil3 . NETFramework 4.0 portable-net40+sl4
Silverlight 4.0
Profil4 . NETFramework 4.5 portable-net45+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profil5 . NETFramework 4.0 portable-net40+win8
Windows 8.0
Profil6 . NETFramework 4.0.3 portable-net403+win8
Windows 8.0
Profil7 . NETFramework 4.5 portable-net45+win8 netstandard1.1
Windows 8.0
Profil14 . NETFramework 4.0 portable-net40+sl5
Silverlight 5.0
Profil18 . NETFramework 4.0.3 portable-net403+sl4
Silverlight 4.0
Profil19 . NETFramework 4.0.3 portable-net403+sl5
Silverlight 5.0
Profil23 . NETFramework 4.5 portable-net45+sl4
Silverlight 4.0
Profil24 . NETFramework 4.5 portable-net45+sl5
Silverlight 5.0
Profil31 Windows 8.1 portable-win81+wp81 netstandard1.0
WindowsPhone 8.1 (SL)
Profil32 Windows 8.1 portable-win81+wpa81 netstandard1.2
WindowsPhone 8.1 (UWP)
Profil36 . NETFramework 4.0 portable-net40+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil37 . NETFramework 4.0 portable-net40+sl5+win8
Silverlight 5.0
Windows 8.0
Profil41 . NETFramework 4.0.3 portable-net403+sl4+win8
Silverlight 4.0
Windows 8.0
Profil42 . NETFramework 4.0.3 portable-net403+sl5+win8
Silverlight 5.0
Windows 8.0
Profil44 . NETFramework 4.5.1 portable-net451+win81 netstandard1.2
Windows 8.1
Profil46 . NETFramework 4.5 portable-net45+sl4+win8
Silverlight 4.0
Windows 8.0
Profile47 . NETFramework 4.5 portable-net45+sl5+win8
Silverlight 5.0
Windows 8.0
Profile49 . NETFramework 4.5 portable-net45+wp8 netstandard1.0
WindowsPhone 8.0 (SL)
Profil78 . NETFramework 4.5 portable-net45+win8+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile84 WindowsPhone 8.1 portable-wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (UWP)
Profile88 . NETFramework 4.0 portable-net40+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile92 . NETFramework 4.0 portable-net40+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile95 . NETFramework 4.0.3 portable-net403+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profile96 . NETFramework 4.0.3 portable-net403+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil102 . NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil104 . NETFramework 4.5 portable-net45+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile111 . NETFramework 4.5 portable-net45+win8+wpa81 netstandard1.1
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile136 . NETFramework 4.0 portable-net40+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile143 . NETFramework 4.0.3 portable-net403+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile147 . NETFramework 4.0.3 portable-net403+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil151 NETFramework 4.5.1 portable-net451+win81+wpa81 netstandard1.2
Windows 8.1
WindowsPhone 8.1 (UWP)
Profile154 . NETFramework 4.5 portable-net45+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile157 Windows 8.1 portable-win81+wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (SL)
WindowsPhone 8.1 (UWP)
Profil158 . NETFramework 4.5 portable-net45+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil225 . NETFramework 4.0 portable-net40+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil240 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil255 . NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile328 . NETFramework 4.0 portable-net40+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile336 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

Selain itu, paket NuGet yang menargetkan Xamarin dapat menggunakan kerangka kerja tambahan yang ditentukan Xamarin:

Nama Deskripsi .NET Standar
monoandroid Dukungan Mono untuk OS Android netstandard1.4
monotouch Dukungan Mono untuk iOS netstandard1.4
monomac Dukungan Mono untuk OSX netstandard1.4
xamarinios Dukungan untuk Xamarin untuk iOS netstandard1.4
xamarinmac Dukungan untuk Xamarin untuk Mac netstandard1.4
xamarinpsthree Dukungan untuk Xamarin di Playstation 3 netstandard1.4
xamarinpsfour Dukungan untuk Xamarin di Playstation 4 netstandard1.4
xamarinpsvita Dukungan untuk Xamarin di PS Vita netstandard1.4
xamarinwatchos Xamarin untuk Watch OS netstandard1.4
xamarintvos Xamarin untuk OS TV netstandard1.4
xamarinxboxthreesixty Xamarin untuk XBox 360 netstandard1.4
xamarinxboxone Xamarin untuk XBox One netstandard1.4

Nota

Stephen Cleary telah membuat alat yang mencantumkan PCL yang didukung, yang dapat Anda temukan di postingannya, profil Framework di .NET.