Udostępnij za pośrednictwem


Platformy docelowe

NuGet używa odwołań do platform docelowych w różnych miejscach, aby w szczególności identyfikować i izolować składniki zależne od struktury pakietu:

  • plik projektu: w przypadku projektów w stylu zestawu SDK plik csproj zawiera odwołania do platformy docelowej.
  • Manifest .nuspec: pakiet może wskazywać różne pakiety, które mają być uwzględnione w projekcie w zależności od struktury docelowej projektu.
  • Nazwa folderu .nupkg: foldery w folderze pakietu lib mogą być nazwane zgodnie z platformą docelową, z których każda zawiera biblioteki DLL i inną zawartość odpowiednią dla tej struktury.
  • packages.config: targetframework atrybut zależności określa wariant pakietu do zainstalowania.

Aby uzyskać listę kanoniczną wszystkich obsługiwanych platform docelowych i ich składni programu TFM, zobacz Platformy docelowe w projektach w stylu zestawu SDK.

Wartości targetFramework to aliasy

Właściwość TargetFramework w pliku projektu to przyjazna nazwa — alias — który jest tłumaczony na tożsamość platformy kanonicznej. Zestaw .NET SDK wykonuje to tłumaczenie, ustawiając TargetFrameworkMoniker (TFM) i, jeśli ma to zastosowanie, TargetPlatformMoniker właściwości.

Na przykład podczas pisania zestaw <TargetFramework>net10.0-windows</TargetFramework>SDK platformy .NET tłumaczy to na:

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

Narzędzie NuGet używa tych właściwości moniker — a nie TargetFramework ciągu — do sprawdzania zgodności pakietu. Oznacza to, że TargetFramework sama wartość może być dowolnym ciągiem, o ile właściwości moniker są ustawione poprawnie. Na przykład następujący projekt jest prawidłowy:

<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>

Ten projekt przywraca i kompiluje dla platformy .NET 10.0, mimo że TargetFramework wartość to banana. Zestaw SDK platformy .NET korzysta już z tego mechanizmu aliasowania dla systemów operacyjnych, takich jak net8.0-ios i net8.0-android, gdzie krótki program TFM jest tłumaczony na pełną nazwę z informacjami o platformie.

Wielowersyjność z zduplikowanymi strukturami

Począwszy od nuGet 7.6 / .NET SDK 10.0.300, wiele TargetFrameworks aliasów może rozpoznać tę samą efektywną strukturę. Umożliwia to korzystanie ze scenariuszy, takich jak kompilacje z wieloma identyfikatorami RID i określanie docelowych rozszerzeń z wieloma wersjami. Aby uzyskać szczegółowe informacje na temat sposobu pracy z przywracaniem, pakowaniem, blokowaniem plików i odwołaniami do projektu, zobacz Określanie kierowania wielu struktur.

Obsługiwane platformy

Struktura jest zwykle przywoływała krótka nazwa platformy docelowej lub TFM. W programie .NET Standard jest to również uogólnione do TxM , aby umożliwić pojedyncze odwołanie do wielu platform.

Uwaga / Notatka

Kod źródłowy klienta NuGet, który oblicza poniższe tabele, znajduje się w następujących lokalizacjach:

Klienci NuGet obsługują struktury w poniższej tabeli. Odpowiedniki są wyświetlane w nawiasach []. Należy pamiętać, że niektóre narzędzia, takie jak dotnet, mogą używać odmian kanonicznych programu TFM w niektórych plikach. Na przykład dotnet pack używa elementu .NETCoreApp2.0 w .nuspec pliku, a nie netcoreapp2.0. Różne narzędzia klienckie NuGet obsługują te odmiany prawidłowo, ale zawsze należy używać kanonicznych programów TFM podczas bezpośredniej edycji plików.

Nazwa Abbreviation TFMs/TxMs
.NET Framework Netto net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Microsoft Store (Sklep Windows) netcore netcore [netcore45]
netcore45 [win, win8]
netcore451 [win81]
netcore50
Mikroframework platformy .NET netmf netmf
Windows wygrać win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (nieobsługiwana przez platformę Windows 10)
Silverlight Sl sl4
sl5
Windows Phone (SL) Wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
platforma uniwersalna systemu Windows Uap uap [uap10.0]
uap10.0
uap10.0.xxxxx (gdzie 10.0.xxxxx to docelowa minimalna wersja aplikacji zużywanej)
.NET Standard netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (i .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
Netto net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
Tizen tizen tizen3
tizen4
Native macierzysty macierzysty

Przestarzałe struktury

Następujące struktury są przestarzałe. Pakiety przeznaczone dla tych struktur powinny zostać zmigrowane do wskazanych zastąpień.

Przestarzała struktura Replacement
aspnet50 netcoreapp
aspnetcore50
dnxcore50
Dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt wygrać

Precedence

Wiele struktur jest powiązanych i zgodnych ze sobą, ale niekoniecznie równoważnych:

Framework Można używać
uap (platforma uniwersalna systemu Windows) Windows 8.1
wpa81
netcore50
win (Microsoft Store) winrt

NET Standard

Platforma .NET Standard upraszcza odwołania między strukturami zgodnymi z binarnymi, umożliwiając pojedynczej strukturze docelowej odwołanie do kombinacji innych. (Aby uzyskać informacje w tle, zobacz .NET Primer).

Narzędzie NuGet Get Nearest Framework Tool symuluje użycie narzędzia NuGet w celu wybrania jednej struktury z wielu dostępnych zasobów platformy w pakiecie na podstawie struktury projektu.

Seria dotnet monikers powinna być używana w nuGet 3.3 i starszych wersjach. Składnia netstandard moniker powinna być używana w wersji 3.4 lub nowszej.

Przenośne biblioteki klas

Ostrzeżenie

Listy PCL nie są zalecane. Mimo że listy PCLS są obsługiwane, autorzy pakietów powinni zamiast tego obsługiwać netstandard. Platforma .NET Standard to ewolucja list PCLs i reprezentuje przenośność binarną na różnych platformach przy użyciu pojedynczego monikera, który nie jest powiązany z biblioteką statyczną, na przykład portable-a+b+c monikers.

Aby zdefiniować platformę docelową odwołującą się do wielu struktur podrzędnych docelowych, portable słowo kluczowe służy do prefiksu listy odwołań struktur. Unikaj sztucznego dołączania dodatkowych struktur, które nie są bezpośrednio kompilowane, ponieważ może to prowadzić do niezamierzonych skutków ubocznych w tych strukturach.

Dodatkowe struktury zdefiniowane przez inne firmy zapewniają zgodność z innymi środowiskami, które są w ten sposób dostępne. Ponadto istnieją skrócone numery profilów, które są dostępne do odwoływania się do tych kombinacji powiązanych struktur jako Profile#, ale nie jest to zalecana praktyka używania tych liczb, ponieważ zmniejsza czytelność folderów i .nuspec.

Profil # Frameworki Imię i nazwisko .NET Standard
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
Profil47 . NETFramework 4.5 portable-net45+sl5+win8
Silverlight 5.0
Windows 8.0
Profil49 . 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)
Profil84 WindowsPhone 8.1 portable-wp81+wpa81 netstandard1.0
WindowsPhone 8.1 (UWP)
Profil88 . NETFramework 4.0 portable-net40+sl4+win8+wp75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profil92 . NETFramework 4.0 portable-net40+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil95 . NETFramework 4.0.3 portable-net403+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profil96 . 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
Profil111 . NETFramework 4.5 portable-net45+win8+wpa81 netstandard1.1
Windows 8.0
WindowsPhone 8.1 (UWP)
Profil136 . NETFramework 4.0 portable-net40+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil143 . NETFramework 4.0.3 portable-net403+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil147 . 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)
Profil154 . NETFramework 4.5 portable-net45+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profil157 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)
Profil328 . NETFramework 4.0 portable-net40+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profil336 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profil344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

Ponadto pakiety NuGet przeznaczone dla platformy Xamarin mogą używać dodatkowych struktur zdefiniowanych przez platformę Xamarin:

Nazwa Opis .NET Standard
monoandroid Obsługa mono dla systemu operacyjnego Android netstandard1.4
monotouch Obsługa mono dla systemu iOS netstandard1.4
monomac Obsługa mono dla systemu OSX netstandard1.4
xamarinios Obsługa platformy Xamarin dla systemu iOS netstandard1.4
xamarinmac Obsługa platformy Xamarin dla komputerów Mac netstandard1.4
xamarinpsthree Obsługa platformy Xamarin w programie Playstation 3 netstandard1.4
xamarinpsfour Obsługa platformy Xamarin na playstation 4 netstandard1.4
xamarinpsvita Obsługa platformy Xamarin w programie PS Vita netstandard1.4
xamarinwatchos Xamarin for Watch OS netstandard1.4
xamarintvos Xamarin dla systemu operacyjnego TV netstandard1.4
xamarinxboxthreesixty Xamarin dla XBox 360 netstandard1.4
xamarinxboxone Xamarin dla XBox One netstandard1.4

Uwaga / Notatka

Stephen Cleary utworzył narzędzie, które zawiera listę obsługiwanych list PCLs, które można znaleźć w swoim wpisie, profile platformy Framework na platformie .NET.