我有一个依赖于另一个应用程序 B 的应用程序 A 。除非已经存在较新版本的B,否则将B与A一起部署。 A用C ++和C#(使用ATL / COM)实现,而B用C#(COM可见并在部署时注册)实现。
我在构建时从B生成类型库(.tlb),并将其导入到A的本机DLL中。这样,我们可以在A的本机部分上使用B。这可以按预期工作。
但是,我还没有找到在A的托管部分直接使用B的好方法。我以为我可以从类型库生成互操作程序集,但这是tlbimp不允许的,因为
类型库'xxx'是从CLR程序集导出的,不能重新导入为CLR程序集。
这个限制对我来说绝对没有意义。我可以通过为B创建一个本机COM包装程序,或者将B的所有接口分离到另一个将与A一起部署(并用于tlb生成)的程序集上来解决这个问题,但是...来吧!真的没有办法从托管代码生成互操作程序集吗?
有什么建议吗?