我将多个第三方托管和非托管 dll 嵌入到一个 dll 中。
该单个 dll 在运行时被拾取并注入到另一个主机应用程序中Assembly.Load
,整个事情应该作为带有插件的主机工作。(只是为了澄清)
我让它适用于所有 dll(托管、非托管和混合),除了一个:VideoOS.Platform.SDK.Export,我在运行时得到 dll not found 异常,该 dll 来自 Milestone NVR SDK
我试过了:
- 将其作为 IncludeAssemblies、Unmanaged32Assemblies 和 Unmanaged64Assemblies
- 切换:压缩,磁盘上的临时文件
- 手动从资源中加载它:
AppDomain.CurrentDomain.AssemblyResolve
- 用(Reflector、DotPeek、ILSpy)反编译库本身都会出现问题,所以我认为可能是一些他们无法反编译的 pinvokes 或类似的东西。
笔记:
- 当 dll 与主机应用程序 exe 位于同一文件夹中时,整个过程有效,但在嵌入时无效
- 我遇到了一个引用库的问题,该库在放入 Unmanaged32Assemblies 时开始工作已解决 OK