Объединение нескольких управляемых и неуправляемых dll в один dll с Fody Costura
Я объединяю несколько сторонних управляемых и неуправляемых dll в одну dll.
Эта единственная DLL-библиотека подбирается и внедряется в другое хост-приложение во время выполнения. Assembly.Load
Предполагается, что все это работает как хост с плагинами. (просто для ясности)
У меня это работает для всех DLL (управляемых, неуправляемых и смешанных) за исключением одного: VideoOS.Platform.SDK.Export, для которого я получаю исключение dll не найден во время выполнения, dll из Milestone NVR SDK
Я пробовал:
- положить его как IncludeAssemblies, Unmanaged32Assemblies и Unmanaged64Assemblies
- переключение: сжатие, временные файлы на диске
- вручную загружая его из ресурсов с помощью:
AppDomain.CurrentDomain.AssemblyResolve
- декомпилируя саму библиотеку с помощью (Reflector, DotPeek, ILSpy), все они сталкиваются с проблемами, так что я думаю, что это, вероятно, некоторые пинвоки или аналогичные, которые они не могут декомпилировать.
Заметки:
- Весь процесс работает, когда dll находится в той же папке, что и exe приложения хоста, но не когда он встраивается
- У меня была проблема со ссылочной библиотекой, которая начала работать, когда положить ее в Unmanaged32Assemblies было решено ОК