【问题标题】:Helptexts lost when referencing a COM DLL引用 COM DLL 时帮助文本丢失
【发布时间】:2011-10-24 03:10:37
【问题描述】:

我对 COM 几乎一无所知,但我会尽量把问题说清楚。

我有一个 .NET 4.0 项目,并且正在引用一个用 VBScript 编写的旧 COM DLL。

当我在代码中使用这个 DLL 时,我在 VS2010 中没有得到任何描述方法和类的自定义帮助文本。它们在对象浏览器中也不可用。

我猜这与 .NET 应用于 COM 库的自动包装器有关。帮助文本似乎在此过程中丢失了。

当我直接在 VS 的对象浏览器中查看 dll 时,我可以看到方法等的文本。

有没有办法保留描述文本以使用引用的 COM dll 进行编码?

【问题讨论】:

  • 相当基本的兼容性问题,.NET 没有办法在程序集中嵌入 IntelliSense 信息。它是通过一个单独的 .xml 文件提供的。类型库导入器 (tlbimp.exe) 无法将嵌入的帮助属性转换为 IntelliSense .xml 文件。会很有用,您也许可以在此处将其作为建议发布:clrinterop.codeplex.com/releases/view/17579
  • 这是 .NET/VS 使用的默认导入器?

标签: c# .net visual-studio-2010 com


【解决方案1】:

您指的是可用于 .NET 类的内联帮助文档而不是参数类型信息吗?如果是这样,我分享你的挫败感。为了让 C# 程序员通过 COM 互操作使用我的 COM 对象,我付出了很多努力在我的 IDL 中编写了帮助字符串 cmets,以发现它们都没有在类型库导入中幸存下来。

在 Adam Nathan 的书“.NET 和 COM:完整的互操作性指南”中的“FAQ:为什么类型库导入器不自动将帮助字符串内容保存在 DescriptionAttribute 中?”下对此行为进行了解释。我发现这本书对学习 COM 互操作很有帮助,尽管它已经很老了。还可以购买 Kindle、epub 和 pdf 格式。

Adam Nathan 的解释是 helpstring 属性不会被转换为 System.ComponentModel.DescriptionAttribute 对象,因为 DescriptionAttributes 用于 Windows 窗体控件并且不可本地化。

就个人而言,我仍然希望无论如何都翻译帮助字符串属性。如果该功能尚未添加到上面链接的 codeplex 类型库导入器中,也许可以添加它。

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 2016-05-16
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2020-04-13
    相关资源
    最近更新 更多