我目前正在开发一个混合的本地/托管应用程序链,它采用免注册 COM。下图说明了这一点:

C# 包装 DLL 已使用 tlbimp.exe 实用程序创建。这允许每个 C# 可执行文件访问 COM DLL 中的本机类型和方法。COM DLL 本身使用基于服务器的 RegFree COM 清单。
当基于客户端的 RegFree COM 清单嵌入到 C# 可执行文件中时,一切正常。但是,我想将这些清单文件移动并统一到 C# DLL 中,这将显着简化版本信息的维护和同步。
因为 Visual Studio 不提供将清单文件嵌入 C# 类库的选项,所以我尝试使用清单工具 (mt.exe) 提取、修改和重新嵌入 DLL 的默认清单。这似乎奏效了,因为 C# DLL 现在在使用 mt 查询时会公开以下清单:
<?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 模块。
有什么我在这里忽略的吗?谢谢。