Как связать много dylibs (при сохранении структуры каталогов) в исполняемый файл mac .app с файлом nuget .targets? - PullRequest
0 голосов
/ 11 июня 2018

В настоящее время я пытаюсь упаковать ~ 350 собственных d-библиотек C в один nuget для macOS.Файл .targets должен объединять dylibs в конечном Mac .app, сохраняя при этом особую архитектуру папок для этих dylibs.

Если это уместно, большинство dylibs - Mach-0 64-bit bundle x86_64, поэтому я считаю, NativeReferenceне работает.Это правильное предположение?

Пара из тех, что мне нужно загрузить с помощью среды выполнения Objc из C # для P / Invoke, Mach-0 64-bit dynamically linked shared library x86_64 (они будут обрабатывать пакеты и ожидать, что они будут в определенном относительномlocation).

Моя попытка здесь https://github.com/mfkl/libvlc-nuget/pull/5/files. Не стесняйтесь игнорировать плагин MSBuild Сбор вишни .

Я не могу получить все dylibsбыть внутри пакета Mac .app и создавать там папки.

Редактировать: Добавление дополнительной информации.

Пробовал NativeReference, Content, EmbeddedResource иBundleResource.Файлы либо не включаются, либо попадают в bin/debug рядом с пакетом .app, что исправляет меня, если я ошибаюсь, это не то, что вам нужно при отправке библиотеки.Не знаете, что использовать, или если пути неправильные, но обратной связи от MSBuild в VS, похоже, по этому поводу не существует.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 25 июня 2018

Без отладки вашей сборки трудно сказать (так как я не вижу прикрепленного журнала сборки, но моя ставка в том, что вы добавляете элементы NativeReference в свой проект слишком поздно, чтобы их мог увидеть mmp.

Теоретически возможно динамически генерировать проект NativeReference для обработки вашим проектом Xamarin.Mac, но это должно произойти за до _CompileToNative, где мы обрабатываем эти элементы.Это может даже произойти до CoreCompile, я не уверен.

Но да, в общем, вы хотите использовать NativeReference для добавления ваших элементов в окончательный комплект.В зависимости от ваших библиотек, возможно, потребуется добавить игры install_name_tool, чтобы исправить относительные пути зависимости.MMP (инструмент упаковки) знает, как обрабатывать некоторые из них, если вы используете NativeReference.

Если вам нужно выполнить настройки после сборки, вы можете использовать маршрут, показанный в примере MSBuild (CreateAppBundleDependsOn).https://github.com/xamarin/mac-samples/blob/master/UseMSBuildToCopyFilesToBundleExample/UseMSBuildToCopyFilesToBundleExample/CustomBuildActions.targets

...