我对 COM 几乎一无所知,但我会尽量把问题说清楚。
我有一个 .NET 4.0 项目并且正在引用一个用 VBScript 编写的旧 COM DLL。
当我在代码中使用此 DLL 时,我在 VS2010 中没有获得任何描述方法和类的自定义帮助文本。它们在对象浏览器中也不可用。
我想这与 .NET 应用于 COM 库的自动包装器有关。帮助文本似乎在这个过程中丢失了。
当我直接在VS的对象浏览器中查看dll时,我可以看到方法等的文本。
有没有办法保留描述文本以使用引用的 COM dll 进行编码?
最佳答案
您指的是可用于 .NET 类的内联帮助文档而不是参数类型信息吗?如果是这样,我会分享你的沮丧。为了 C# 程序员通过 COM 互操作使用我的 COM 对象的好处,我付出了很多努力在我的 IDL 中编写帮助字符串注释,发现它们都没有在类型库导入中幸存下来。
Adam Nathan 的书“.NET 和 COM:完整的互操作性指南”中的“常见问题解答:类型库导入程序为何不自动将帮助字符串内容保存在 DescriptionAttribute 中?”下对此行为进行了解释。我发现这本书对学习 COM 互操作非常有帮助,尽管它已经很老了。它也可以 Kindle、epub 和 pdf 格式购买。
Adam Nathan 的解释是 helpstring 属性没有被翻译成 System.ComponentModel.DescriptionAttribute对象,因为 DescriptionAttributes 适用于 Windows 窗体控件并且不可本地化。
就我个人而言,我仍然更喜欢 helpstring 属性被翻译。也许该功能可以添加到上面链接的 codeplex 类型库导入器中,如果它还没有这样做的话。
关于c# - 引用 COM DLL 时帮助文本丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7012045/