Смотрю на образцовые библиотеки, к примеру SQLite. Они добавили папку runtimes внутри которой отдельная папка для каждой операционной системы:
У меня нет нужды в поддержке такого количества операционных систем — только Linux и Windows. По этому размещаю 2 либы: mylib.dll и mylib.so в корне и без доп. манипуляций данный код работает в каждой из систем (расширение dll или so выбирается автоматически — мне не нужно это прописывать).
[DllImport("mylib")]
internal static extern int Initialize();
Вопросы такие:
1. Стоит ли соблюдать структуру папок runtimes/win-x64/native? Является ли это стандартом? Никакой поддержки фреймворком, насколько я вижу, нет.
2. Можно ли без создания nuspec — только лишь конфигурированием в csproj-файле вместе с основной либой добавлять в пакет и зависимые native-библиотеки? Что-то искал и не нашел как...
Здравствуйте, Shmj, Вы писали:
S>Смотрю на образцовые библиотеки, к примеру SQLite. Они добавили папку runtimes внутри которой отдельная папка для каждой операционной системы:
S>Image: 1595151935
S>У меня нет нужды в поддержке такого количества операционных систем — только Linux и Windows. По этому размещаю 2 либы: mylib.dll и mylib.so в корне и без доп. манипуляций данный код работает в каждой из систем (расширение dll или so выбирается автоматически — мне не нужно это прописывать).
S>S>[DllImport("mylib")]
S>internal static extern int Initialize();
S>
S>Вопросы такие:
S>1. Стоит ли соблюдать структуру папок runtimes/win-x64/native? Является ли это стандартом? Никакой поддержки фреймворком, насколько я вижу, нет.
S>2. Можно ли без создания nuspec — только лишь конфигурированием в csproj-файле вместе с основной либой добавлять в пакет и зависимые native-библиотеки? Что-то искал и не нашел как...
Если раб. комп. с Вижуал студией подключен к интернету, то студия нугет пакеты скачивает самостоятельно.
Пример манипуляции нугет пакетом при одном проекте в решении:
Открываем проект-> в Обозревателе решений нажим. пр. кнопкой мыши, выбираем пункт "Управл-е пакетами nuget", далее открывается вкладка nuget, выбираем "Обзор", вводим в стр. поиска технологию, например SQLite-> выбираем нужный пакет, в загрузившейся панели с описанием выбр. пакета выбир. нужную версию, жмем установить.
В вкладке "Установлено" можем удалить или обновить установл. пакеты.
Если качаете пакеты с nuget.org, то структуру папок соблюдать не надо, просто качаете папку с названием своей опер. сист-ы и копируете содержимое папки в папку nuget которая прописана в VS.
Csproj формируется автоматически, перед установкой либы я обычно устанавливаю зависимые либы (зависимости). Список зависимостей можно посмотреть во вкладке Nuget.