无法在即时模式下访问 Word class 的 class 个成员

Can't access class members of Word class in immediate mode

我正在编写一个 vb.net 桌面应用程序来自动执行 ms-word。定义取自 word 对象模型的类型变量,在调试时,我无法以立即模式访问那些 类 的成员元素。当它是 运行.

时,我可以从我的代码访问它们
Private Sub BlackOut(aRange As Word.Range, CharLimit As Integer)

  MsgBox(aRange.Characters.Count) 'This works

End Sub

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

error BC30456: 'Characters' is not a member of 'Range'.

奇怪的是,输入 ? aRange.Text 可以立即 Window。

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

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

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

有了这些文件 selected,按“F4”键显示它们的属性。

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

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