Целевые платформы

NuGet использует ссылки на целевую платформу в различных местах, чтобы точно определить и изолировать зависимые от платформы компоненты пакета:

  • файл проекта: для проектов в стиле SDK CSPROJ содержит ссылки на целевую платформу.
  • Манифест .nuspec. Можно указать в пакете на необходимость включить в проект отдельные пакеты в зависимости от целевой платформы проекта.
  • Имя папки .nupkg. Папки внутри папки lib пакета могут иметь имена, соответствующие целевой платформе, и содержать DLL и другие файлы, необходимые для соответствующей платформы.
  • packages.config. Атрибут targetframework зависимости задает устанавливаемый вариант пакета.

Примечание.

NuGet поддерживает все современные целевые платформы .NET:

Поддерживаемые платформы

Платформа обычно указывается коротким моникером целевой платформы (TFM). В .NET Standard это также обобщено в TxM , чтобы разрешить одну ссылку на несколько платформ.

Примечание.

Исходный код клиента NuGet, который рассчитывает приведенные ниже таблицы, располагается в следующих местах:

Клиенты NuGet поддерживают платформы, представленные в следующей таблице. Эквивалентные обозначения отображаются в квадратных скобках []. Обратите внимание, что некоторые средства, например dotnet, могут использовать в некоторых файлах варианты канонических моникеров целевой платформы (TFM). Например, dotnet pack используется .NETCoreApp2.0 в .nuspec файле, а не netcoreapp2.0. Различные клиентские средства NuGet обрабатывают эти варианты различным образом, однако при непосредственном редактировании файлов всегда следует использовать канонические моникеры целевой платформы (TFM).

Имя. Аббревиатура TFM/TxM
.NET Framework net net11
net20
net35
net40
net403
net45.
net451
net452
net46
net461
net462
net47
net471
net472
net48
Microsoft Store (Магазин Windows) netcore netcore [netcore45]
netcore45 [win, win8]
netcore451 [win81]
netcore50
.NET MicroFramework netmf netmf
Windows победа win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (не поддерживается платформой Windows 10)
Silverlight sl sl4
sl5
Windows Phone (SL) wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
Универсальная платформа Windows uap uap [uap10.0]
uap10.0
uap10.0.xxxxx (где 10.0.xxxxx является целевой версией минимальной версии используемого приложения)
.NET Standard netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3.
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (и .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
net net5.0
net6.0
net7.0
net8.0
Tizen tizen tizen3
tizen4
Нативный платформы платформы

Устаревшие платформы

Следующие среды являются устаревшими. Пакеты, предназначенные для этих платформ, следует перевести на предлагаемые для замены.

Устаревшая платформа Замена
aspnet50 netcoreapp
aspnetcore50
dnxcore50
dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt победа

Приоритет

Некоторые платформы являются родственными и совместимыми друг с другом, хотя и не полностью идентичными:

Платформа Можно использовать
Универсальная платформа Windows (uap) win81
wpa81
netcore50
win (Microsoft Store) winrt

.NET Standard

.NET Standard упрощает ссылки между двоичными платформами, что позволяет одной целевой платформе ссылаться на сочетание других платформ. (Общие сведения см. в учебнике по .NET для начинающих.)

Средство получения ближайшей платформы из набора средств NuGet имитирует логику NuGet, которая используется для выбора конкретной платформы из нескольких доступных в пакете вариантов в зависимости от платформы проекта.

В NuGet 3.3 и более ранних версий следует использовать последовательность моникеров dotnet. В версии 3.4 и более поздних должен использоваться синтаксис моникеров netstandard.

Переносимые библиотеки классов

Предупреждение

Использовать переносимые библиотеки классов не рекомендуется. Несмотря на то, что переносимые библиотеки классов поддерживаются, вместо них авторам следует реализовать поддержку netstandard. Платформа .NET Standard — это эволюция PCLs и представляет двоичную переносимость на разных платформах с помощью одного моникера, который не привязан к статической библиотеке, такой как переносимые-a+b+c моникеры.

Чтобы определить целевую платформу, которая ссылается на несколько дочерних целевых платформ, используйте ключевое слово portable в качестве префикса для списка платформ, на которые указывают ссылки. Не следует искусственно включать дополнительные платформы, для которых не выполняется компиляция, поскольку это может привести к возникновению непредвиденных побочных эффектов.

Дополнительные платформы, определяемые третьими лицами, обеспечивают совместимость с другими средами, которые доступны таким образом. Кроме того, существуют сокращенные номера профиля, которые можно использовать для ссылки на такие сочетания связанных платформ, вида Profile#. Тем не менее применять такой подход также не рекомендуется, поскольку это снижает удобочитаемость папок и файлов .nuspec.

№ профиля Платформы ФИО .NET Standard
Profile2 .NETFramework 4.0 portable-net40+win8+sl4+wp7
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
Profile3 .NETFramework 4.0 portable-net40+sl4
Silverlight 4.0
Profile4 .NETFramework 4.5 portable-net45+sl4+win8+wp7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profile5 .NETFramework 4.0 portable-net40+win8
Windows 8.0
Profile6 .NETFramework 4.0.3 portable-net403+win8
Windows 8.0
Profile7 .NETFramework 4.5 portable-net45+win8 netstandard1.1
Windows 8.0
Profile14 .NETFramework 4.0 portable-net40+sl5
Silverlight 5.0
Profile18 .NETFramework 4.0.3 portable-net403+sl4
Silverlight 4.0
Profile19 .NETFramework 4.0.3 portable-net403+sl5
Silverlight 5.0
Profile23 .NETFramework 4.5 portable-net45+sl4
Silverlight 4.0
Profile24 .NETFramework 4.5 portable-net45+sl5
Silverlight 5.0
Profile31 Windows 8.1 portable-win81+wp81 netstandard1.0
WindowsPhone 8.1 (SL)
Profile32 Windows 8.1 portable-win81+wpa81 netstandard1.2
WindowsPhone 8.1 (UWP)
Profile36 .NETFramework 4.0 portable-net40+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile37 .NETFramework 4.0 portable-net40+sl5+win8
Silverlight 5.0
Windows 8.0
Profile41 .NETFramework 4.0.3 portable-net403+sl4+win8
Silverlight 4.0
Windows 8.0
Profile42 .NETFramework 4.0.3 portable-net403+sl5+win8
Silverlight 5.0
Windows 8.0
Profile44 .NETFramework 4.5.1 portable-net451+win81 netstandard1.2
Windows 8.1
Profile46 .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)
Profile78 .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
Profile102 .NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile104 .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)
Profile151 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)
Profile158 .NETFramework 4.5 portable-net45+sl5+win8+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile225 .NETFramework 4.0 portable-net40+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile240 .NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile255 .NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile259 .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)

Кроме того, пакеты NuGet для Xamarin могут использовать дополнительные платформы, определенные для Xamarin. См. раздел Создание пакетов NuGet для Xamarin.

Имя Описание .NET Standard
monoandroid Поддержка Mono для ОС Android netstandard1.4
monotouch Поддержка Mono для iOS netstandard1.4
monomac Поддержка Mono для OSX netstandard1.4
xamarinios Поддержка Xamarin для iOS netstandard1.4
xamarinmac Поддержка Xamarin для Mac netstandard1.4
xamarinpsthree Поддержка Xamarin для Playstation 3 netstandard1.4
xamarinpsfour Поддержка Xamarin для Playstation 4 netstandard1.4
xamarinpsvita Поддержка Xamarin для PS Vita netstandard1.4
xamarinwatchos Xamarin для Watch OS netstandard1.4
xamarintvos Xamarin для TV OS netstandard1.4
xamarinxboxthreesixty Xamarin для XBox 360 netstandard1.4
xamarinxboxone Xamarin для XBox One netstandard1.4

Примечание.

Стивен Клири (Stephen Cleary) создал средство, которое выводит список поддерживаемых переносимых библиотек классов, который можно найти в его статье Профили платформы в .NET.