Например, если я создаю проект 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.