Распространение DLL в NugetC#

Место общения программистов C#
Anonymous
Распространение DLL в Nuget

Сообщение Anonymous »

Я работаю над библиотекой C# (LLamaSharp), которая является оболочкой библиотеки C++ (llama.cpp).
В состав пакета nuget мы включаем библиотеки DLL, скомпилированные со всеми различные типы аппаратной поддержки (CUDA, OpenCL, Vulkan, AVX/AVX2/AVX512 и т. д.). Во время выполнения выбирается наилучший возможный бэкэнд для доступного оборудования.
Здесь вы можете увидеть текущую иерархию папок со всеми бэкэндами. Автоматический выбор зависит от этого точного макета, чтобы иметь возможность найти соответствующие библиотеки DLL. Файл nuspec, используемый для сборки пакета, находится здесь.
Однако при текущей настройке это не удается при публикации «автономной» сборки (в Visual Studio: «Сборка» > «Опубликовать», установите режим развертывания). «самостоятельным»). Это выдаст следующую ошибку:

Код: Выделить всё

Found multiple publish output files with the same relative path:
- llamasharp.backend.cpu\0.11.1\runtimes\win-x64\native\avx\llama.dll,
- llamasharp.backend.cpu\0.11.1\runtimes\win-x64\native\avx2\llama.dll,
- llamasharp.backend.cpu\0.11.1\runtimes\win-x64\native\avx512\llama.dll,
- llamasharp.backend.cpu\0.11.1\runtimes\win-x64\native\llama.dll
Похоже, что вся иерархия папок выравнивается в процессе сборки. Это вызывает немедленную ошибку сборки (несколько файлов помещаются в одно и то же место), а также может привести к сбою выбора во время выполнения (файлы не помещаются в правильные папки).
Как правильно способ распространить иерархию папок DLL через nuget и сохранить структуру в окончательной сборке?

Подробнее здесь: https://stackoverflow.com/questions/784 ... s-in-nuget

Вернуться в «C#»