1

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

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在即时窗口中起作用。

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

4

1 回答 1

2

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

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

Word 互操作文件

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

装配体属性

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

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

于 2019-07-26T14:57:03.167 回答