我有一个作为第三方 API 的一部分提供的 TLB。我使用 TLBIMP.exe 生成 DLL 程序集包装器。然而,在开发时,该程序集似乎需要使用 regsvr32 注册才能使用。
然而,这在开发时不是问题;我在生产中使用托管实例,并且在部署时手动注册 DLL 即使不是不可能,也会很痛苦。有没有一种方法可以在部署期间不需要注册步骤来使用托管 DLL 程序集?
我一直在互联网上阅读,并找到了一些关于使用 app.manifest 免注册 COM 的文献。这可能是一个可行的解决方案吗?
如果类型库也嵌入了您的第 3 方 COM DLL,因为它应该是这样,隔离串口确实可以用于此目的(您可以使用 OleView 进行验证)。在 VS2010/2012 中以这种方式使用 COM DLL 非常容易。 DLL 必须在开发计算机上注册。然后您只需将其添加为对您的 .NET 项目的引用并打开其Embed Interop Types
and Isolated
特性:
互操作程序集将与使用的 .NET 程序集合并,您只需确保 COM DLL、.NET 程序集和生成的。显现文件在部署时被复制在一起。
考虑客户端应用程序的 COM 单元模型非常重要。使用 STA 客户端应该不会有任何问题。但对于 MTA 模型,默认的基于 typelib 的编组器可能不适用于由隔离 DLL 创建的 COM 对象(更多信息请参见here)。如果 DLL 附带了实现的 COM 代理/存根代码,那么这也应该不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)