C ++ Универсальная Windows DLL для UWP и Classic Desktop

Универсальная 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?

0

Решение

У меня была дискуссия с командой 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" />
0

Другие решения

Других решений пока нет …