uap10.0 netstandard2.0 в nuget - PullRequest
       86

uap10.0 netstandard2.0 в nuget

1 голос
/ 25 июня 2019

Я создаю пакет Nuget, который включает в себя версии моей библиотеки uap10.0 и netstandard2.0.

uap10.0 фактически совместим с .netstandard1.3 и может использоваться для универсальных приложений Windows в Windows до Windows 10 Fall Creators Update. Начиная с Windows 10 Fall Creators Update, можно использовать netstandard2.0.

Мне интересно, как Nuget подбирает версию для использования. Например, если я создаю проект UWP и выбираю Target и Min версию в качестве Windows 10 Fall Creators, а затем использую Install-package MyPackage, он выберет версию DLL netstandard2.0 или uap10.0? Или как я (поставщик пакетов) должен это контролировать?

1 Ответ

1 голос
/ 27 июня 2019

Например, если я создаю проект UWP и выбираю Target и Min версия как Windows 10 Fall Creators, а затем использовать Install-пакет MyPackage, он выберет версию DLL библиотеки netstandard2.0 или uap10.0?

По моему мнению, он наверняка выберет версию uap10.0 в проекте UWP.

Я сделал несколько тестов для этого, чтобы проверить результат, в проекте UWP, если мы используем пакет, включающий обе версии uap10.0 and netstandard2.0, он всегда выберет версию uap10.0 вместо .netstandard2.0. И только когда я пытаюсь использовать пакет, который включает только версию netstandard2.0, UWP выберет netstandard2.0.

Когда NuGet устанавливает пакет с несколькими версиями сборки, он пытается сопоставить имя фреймворка сборки с целью рамки проекта.

Пожалуйста, отметьте этот официальный документ , чтобы NuGet использовала сборку, наиболее близкую к совпадению. (Имя платформы сборки <=> имя целевой платформы проекта)

Итак, более конкретная целевая структура выигрывает. Что касается вашей ситуации, в рамках проекта UWP, нацеленного на uap, он выберет версию uap10.0 из пакета, который включает в себя несколько версий. И вам не нужно это контролировать, вам просто нужно поместить различные версии сборки в соответствующую папку фреймворка , прежде чем упаковать их.

Обновление:

Идея из напоминания Алекса. С такой структурой при создании пакета nuget:

-lib
  -uap10.0
     --Test.dll
  -uap10.0.16299
     --Test.dll(actually target .net standard2.0)

Когда проект UWP с минимальной версией 16299 и новее, он выберет стандартную версию .net, которая находится в папке uap10.0.16299. А для старых, чей минимум меньше 16299, он выберет сборку из папки uap10.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...