使用本机/托管环境将无注册COM清单嵌入到C#dll中
发布时间:2020-12-16 07:09:52 所属栏目:百科 来源:网络整理
导读:我目前正在开发一个混合的本机/托管应用程序链,它使用免注册COM.下图说明了这一点: 使用tlbimp.exe实用程序创建了C#包装器DLL.这允许每个C#可执行文件访问COM DLL中的本机类型和方法. COM DLL本身使用基于服务器的RegFree COM清单. 当基于客户端的RegFree C
我目前正在开发一个混合的本机/托管应用程序链,它使用免注册COM.下图说明了这一点:
使用tlbimp.exe实用程序创建了C#包装器DLL.这允许每个C#可执行文件访问COM DLL中的本机类型和方法. COM DLL本身使用基于服务器的RegFree COM清单. 当基于客户端的RegFree COM清单嵌入在C#可执行文件中时,一切正常.但是,我想将这些清单文件移动并统一到C#DLL中,这样可以显着简化版本信息的维护和同步. 由于Visual Studio不提供将清单文件嵌入C#类库的选项,因此我尝试使用清单工具(mt.exe)提取,修改和重新嵌入DLL的默认清单.这似乎有效,因为当用mt查询时,C#DLL现在暴露了以下清单: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity name="FirstClient" version="1.0.0.0" processorArchitecture="msil"></assemblyIdentity><file name="FirstClient.dll" hashalg="SHA1"></file> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="atl" version="1.0.0.0"></assemblyIdentity> </dependentAssembly> </dependency> </assembly> 但是,可执行文件拒绝工作,每个人抱怨COM类工厂无法找到丢失的COM模块. 我在这里忽略了什么吗?谢谢. 解决方法
我通过调整适当的激活上下文函数来实现它.感谢
Hans Passant的暗示.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |