TCS*_*TCS 6 c# com com-interop tlbimp
为了.dll在C++中使用COM ,我在编译时需要的是#importTLB(或提取TLB的DLL),我准备好了.为什么C#需要注册DLL(免注册COM与注册相同)才能编译?为什么TLB不够用?
请注意我的问题是关于.dll使用COM对象的编译.我理解为什么必须在运行时注册该对象.
首先,与 C++ 编译器或许多其他可以读取类型库的编译器不同,CLR 和 .NET 编译器实际上都不会读取类型库。它们都依赖于互操作库,即从类型库生成的 .NET 程序集。它只包含从 tlb 反编译的声明,其格式是 CLR 和编译器都可以理解的。
执行此操作的主要工具是类型库导入程序 Tlbimp.exe。
运行 Tlbimp.exe 并不是硬性要求,尽管您会考虑在构建服务器上执行此操作。IDE 还支持从“添加引用”对话框浏览已注册的类型库。添加到项目中的项包含注册表项,而不是类型库名称。MSBuild任务<ResolveComReference>根据注册表信息生成互操作程序集。
这样做的主要优点是现在可以轻松自动生成清单条目,因此无需注册即可使用 COM 服务器。又名“免注册 COM”。需要注册表信息来提供清单条目。只需将Isolated属性设置为True即可打开以供参考。 非常理想。
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |