【问题标题】:Can't access class members of Word class in immediate mode无法在即时模式下访问 Word 类的类成员
【发布时间】:2019-07-26 13:18:14
【问题描述】:

我正在编写一个自动化ms-wordvb.net 桌面应用程序。定义从单词对象模型中获取的类型的变量,在调试时,我无法以立即模式访问这些类的成员元素。我可以在我的代码运行时访问它们。

Private Sub BlackOut(aRange As Word.Range, CharLimit As Integer)

  MsgBox(aRange.Characters.Count) 'This works

End Sub

运行代码并访问aRange.Characters.Count 工作正常。但是,当设置断点并在即时窗口中键入行 ? aRance.Characters.Count 时,我收到错误消息:

错误 BC30456:“字符”不是“范围”的成员。

奇怪的是,输入 ? aRange.Text 在即时窗口中有效。

我以前没有遇到过。谁能帮我解决这个问题?

【问题讨论】:

    标签: vb.net visual-studio vscode-debugger immediate-mode


    【解决方案1】:

    这是由于 Word 互操作程序集引用(Interop.Microsoft.Office.Core、Interop.Microsoft.Office.Interop.Word 和 Interop.VBIDE)上的“嵌入互操作类型”设置为 True。当此设置为 True 时,编译器仅提取代码中使用的类型定义并将其嵌入到您的程序中。这很有用,因为它消除了在程序中包含这些 Dll 的需要,但由于调试会话不再提供完整的类型信息,因此在调试期间很难“编辑和继续”。解决方案是在开发过程中不要嵌入程序集。

    在解决方案资源管理器中,单击“显示所有文件”按钮以显示“参考”节点。单击节点将其展开。按住 Control 键并选择三个文件,如下图所示。

    选中这些文件后,按“F4”键显示它们的属性。

    将“嵌入互操作类型”更改为False(这样做也应该将“复制本地”更改为True

    当您准备好发布应用程序时,将这些属性改回来。

    【讨论】:

    • 解决了烦人的限制。感谢您及时准确的回答!
    猜你喜欢
    • 2012-09-12
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多