Стандартные сборки.NET: создание пакетов nuget, которые могут использоваться.NET Core и полной.NET, размещенной на локальном Nuget.Server
У меня есть сборка, предназначенная для netstandard 2.0, чтобы его можно было использовать из.NET Core и полных проектов.NET Standard. Я использую команду dotnet pack для создания пакета nuget, который затем помещается на локальный сервер хоста nuget (созданный в соответствии с инструкциями, приведенными здесь.
Теперь, поскольку базовые сборки netstandard можно использовать из проектов.NET 4.7.1, я подумал, что смогу увидеть пакеты nuget, предназначенные для netstandard, когда перечисляю свои локальные пакеты nuget из пользовательского интерфейса диспетчера пакетов VS nuget (и проекта строится против.NET 4.7.1). К сожалению, мне удалось показать его единственным способом - изменить настройки nuget.server, чтобы он не фильтровал возвращаемые результаты по версии платформы.
Это ожидаемое поведение? Разве я не могу добавить ссылки на пакеты nuget, в которых есть сборки, предназначенные для стандарта.net?
Луис
1 ответ
Если вы посмотрите официальную документацию стандарта.NET, то увидите, что стандарт.Net 2.0 поддерживается в.Net framework 4.6.1 и более поздних версиях, но для его работы должен быть установлен соответствующий SDK.Net core 2.0. Проверьте таблицу в документации. Вероятно, у вас его нет там, где вы хотите использовать пакет.
Другой вариант заключается в том, что вы добавляете в свой проект как классический.NET Framework, так и дополнительную платформу. Затем, когда вы соберете пакет NuGet, он будет содержать еще одну dll для классического.NET Framework, поэтому он всегда будет работать. Вы добавляете другую целевую платформу в проект, находя следующий элемент <TargetFramework>netcoreapp2.0</TargetFramework>
и тогда вы можете изменить его, чтобы включить, например, что <TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
включить также.NET 4.6.1. Более подробная информация о том, какие значения действительны для целевых структур, находится в документации. Целевые рамки