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