Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
NuGet использует ссылки на целевую платформу в различных местах для определения и изоляции компонентов, зависимых от платформы пакета:
- файл проекта: для проектов в стиле SDK CSPROJ содержит ссылки на целевую платформу.
- Манифест nuspec: пакет может указывать на отдельные пакеты, которые должны быть включены в проект в зависимости от целевой платформы проекта.
-
Имя папки .nupkg: папки внутри папки пакета
libможно назвать в соответствии с целевой платформой, каждой из которых содержатся библиотеки DLL и другое содержимое, соответствующее этой платформе. -
packages.config:
targetframeworkатрибут зависимости указывает вариант устанавливаемого пакета.
Список канонических всех поддерживаемых целевых платформ и их синтаксиса TFM см. в разделе "Целевые платформы" в проектах в стиле SDK.
Значения TargetFramework — это псевдонимы
Свойство TargetFramework в файле проекта — это понятное имя — псевдоним, который преобразуется в каноническое удостоверение платформы. Пакет SDK для .NET выполняет этот перевод, задав TargetFrameworkMoniker (TFM) и при необходимости TargetPlatformMoniker свойства.
Например, при написании <TargetFramework>net10.0-windows</TargetFramework>пакет SDK для .NET преобразует это в:
TargetFrameworkMoniker=.NETCoreApp,Version=v10.0TargetPlatformMoniker=Windows,Version=7.0
NuGet использует эти свойства моникера , а не TargetFramework строку для проверок совместимости пакетов. Это означает, что TargetFramework само значение может быть любой строкой, если свойства моникера заданы правильно. Например, следующий проект действителен:
<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>
Этот проект восстанавливает и создает сборки для .NET 10.0, даже если TargetFramework значение равно banana. Пакет SDK для .NET уже использует этот механизм псевдонима для TFM для конкретной ОС, например net8.0-ios , где net8.0-androidкороткий TFM преобразуется в полный моникер с информацией о платформе.
Многоцелевой выбор с повторяющимися платформами
Начиная с NuGet 7.6 / .NET SDK 10.0.300, несколько TargetFrameworks псевдонимов могут разрешаться в одной эффективной платформе. Это позволяет сценариям, таким как сборки с несколькими версиями и целевые расширения с несколькими версиями. Дополнительные сведения о том, как это работает с восстановлением, пакетом, блокировкой файлов и ссылками на проекты, см. в статье "Назначение нескольких платформ".
Поддерживаемые платформы
Платформа обычно ссылается на короткий моникер целевой платформы или TFM. В .NET Standard это также обобщено в TxM , чтобы разрешить одну ссылку на несколько платформ.
Замечание
Исходный код клиента NuGet, вычисляющий приведенные ниже таблицы, находится в следующих расположениях:
- Поддерживаемые имена платформ: FrameworkConstants.cs
- Приоритет и сопоставление платформы: DefaultFrameworkMappings.cs
Клиенты NuGet поддерживают платформы в таблице ниже. Эквиваленты отображаются в скобках []. Обратите внимание, что некоторые средства, например dotnet, могут использовать варианты канонических TFM в некоторых файлах. Например, dotnet pack используется .NETCoreApp2.0 в .nuspec файле, а не netcoreapp2.0. Различные клиентские средства NuGet правильно обрабатывают эти варианты, но при редактировании файлов всегда следует использовать канонические TFMs.
| Имя | Аббревиатура | TFMs/TxMs |
|---|---|---|
| платформа .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 | netmf | netmf |
| Виндоус | победа | win [win8, netcore45] |
| win8 [netcore45, win] | ||
| win81 [netcore451] | ||
| win10 (не поддерживается платформой Windows 10) | ||
| Silverlight | сл | 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 | ||
| сеть | net5.0 | |
| net6.0 | ||
| net7.0 | ||
| net8.0 | ||
| net9.0 | ||
| net10.0 | ||
| Tizen | tizen | tizen3 |
| tizen4 | ||
| Native | родной | родной |
Устаревшие платформы
Следующие платформы устарели. Пакеты, предназначенные для этих платформ, должны перейти на указанные замены.
| Нерекомендуемая платформа | Replacement |
|---|---|
| aspnet50 | netcoreapp |
| aspnetcore50 | |
| dnxcore50 | |
| dnx | |
| dnx45 | |
| dnx451 | |
| dnx452 | |
| dotnet | netstandard |
| dotnet50 | |
| dotnet51 | |
| dotnet52 | |
| dotnet53 | |
| dotnet54 | |
| dotnet555 | |
| dotnet56 | |
| winrt | победа |
Приоритет
Ряд платформ связаны друг с другом и совместимы друг с другом, но не обязательно эквивалентны:
| Платформа | Может использовать |
|---|---|
| uap (универсальная платформа Windows) | Windows 8.1 |
| wpa81 | |
| netcore50 | |
| win (Microsoft Store) | winrt |
.NET Standard
.NET Standard упрощает ссылки между двоичными платформами, что позволяет одной целевой платформе ссылаться на сочетание других платформ. (В фоновом режиме см. приложение .NET Primer.)
Средство NuGet Get Ближайшей платформы имитирует то, что NuGet использует для выбора одной платформы из многих доступных ресурсов платформы в пакете на основе платформы проекта.
Ряд dotnet моникеров следует использовать в NuGet 3.3 и более ранних версиях. netstandard Синтаксис моникера должен использоваться в версии 3.4 и более поздних версиях.
Переносимые библиотеки классов
Предупреждение
Не рекомендуется использовать pcLs. Хотя поддерживаются списки PCLs, авторы пакетов должны поддерживать 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 | |||
| Профиль3 | . 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+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+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+wp8 | |
| Silverlight 5.0 | |||
| Windows 8.0 | |||
| WindowsPhone 8.0 (SL) | |||
| Профиль143 | . 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+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+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+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+wp81+wp8 | netstandard1.0 |
| Windows 8.0 | |||
| WindowsPhone 8.1 (UWP) | |||
| WindowsPhone 8.0 (SL) | |||
| Profile328 | . NETFramework 4.0 | portable-net40+sl5+win8+wpa81+wp81+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+wp81+wp8 | |
| Silverlight 5.0 | |||
| Windows 8.0 | |||
| WindowsPhone 8.1 (UWP) | |||
| WindowsPhone 8.0 (SL) | |||
| Profile344 | . NETFramework 4.5 | portable-net45+sl5+win8+wpa81+wp81+wp8 | |
| Silverlight 5.0 | |||
| Windows 8.0 | |||
| WindowsPhone 8.1 (UWP) | |||
| WindowsPhone 8.0 (SL) |
Кроме того, пакеты NuGet, предназначенные для Xamarin, могут использовать дополнительные платформы, определенные 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 for Watch OS | netstandard1.4 |
| xamarintvos | Xamarin for TV OS | netstandard1.4 |
| xamarinxboxthreesixty | Xamarin для XBox 360 | netstandard1.4 |
| xamarinxboxone | Xamarin для XBox One | netstandard1.4 |
Замечание
Стивен Клири создал инструмент, который перечисляет поддерживаемые PCLs, которые можно найти в своем посте, профили Платформы в .NET.