Универсальная Windows DLL на самом деле универсальная, или это только для UWP?
Я создаю нативный C ++ dll со всеми значениями по умолчанию, но когда я ссылаюсь на него из приложения Classic Desktop (это модульный тест), я получаю следующее исключение:
Эта операция действительна только в контексте контейнера приложения.
Конечно, «Универсальный» в «Универсальной Windows» может быть для крутых парней там :), но я действительно не хочу создавать две отдельные библиотеки для Windows 10, просто потому что.
Я также заметил это при создании NuGets для .NET Core, я вставил свою нативную библиотеку в win10
папка. У меня также есть специальная сборка для Windows 7, так что вошел в win7
папка. Все выглядело хорошо, до времени выполнения, даже .NET Core не может загрузить эту универсальную DLL.
Является ли C ++ Universal Windows только для UWP? Есть ли способ использовать одну DLL для .NET Core, UWP и Classic Desktop? Любые специальные флаги для установки?
Если нет никакого способа иметь истинную универсальную DLL, как можно отличить, если Windows 10 DLL для UWP или Classic Desktop?
У меня была дискуссия с командой NuGet, и у них есть решение:
Поддержка для
runtimes/{rid}/nativeassets/{tfm}/{any?}
был добавлен с # 2782Установите минимальную версию клиента 3.5.0 в своем nuspec, чтобы убедиться, что потребители имеют правильную версию клиента, чтобы выбрать этот путь nupkg.
https://github.com/NuGet/Home/issues/5042
Так что в случае моего .nuspec:
<file src="Managed.dll" target="lib\netstandard1.3" />
<file src="Native-Win7.dll" target="runtimes\win7-x64\native" />
<file src="Native-Win10.dll" target="runtimes\win10-x64\native" />
<file src="Native-Uap10.dll" target="runtimes\win10-x64\nativeassets\uap10.0" />
Других решений пока нет …