【发布时间】:2011-07-01 21:52:44
【问题描述】:
我正在使用 .NET 4(VS2010,C#)开发 DCOM 服务器。就其本身而言,它运行良好。
现在,我还需要为此 DCOM 服务器开发一个 .NET 客户端,但我无法添加对 TypeLib 的引用。 Visual Studio 会告诉我类型库是从 .NET 程序集中导出的,不能作为引用添加。
对this question 的回答表明我应该能够使用TlbImp.exe 来生成包装程序集,但它也会拒绝这样做:
TlbImp:错误 TI1029:类型库 “MyWrapper”是从 CLR 导出的 程序集,不能重新导入为 一个 CLR 程序集。
我理解,从纯粹的 .NET 角度来看,为此使用 DCOM 可能没有多大意义。但是,非 .NET 应用程序也应该可以访问同一服务器。
我尝试将我的 tlb 转换为 IDL 并从中重新生成 tlb,但这并不能欺骗 Visual Studio。
也许可以在重新生成之前稍微修改 IDL,或者有什么方法可以强制使用 DCOM,即使服务器和客户端都是用 .NET 编写的?
【问题讨论】:
-
你为什么不想创建一个纯 .Net 引用?如果你将你的类库导出到 COM,它不会禁止你在 .Net 中使用它。
-
如果您想要远程托管,我会直接在 .NET 或 WCF 中引用程序集。然后创建一个 c# 代理,将其导出为可以从旧客户端引用的普通 COM 对象。这样,当非 .NET 应用程序最终消亡(假设这是您的长期目标)时,您就有了一条清晰的切断路径。