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

时间:2019-07-26 13:18:14

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

我正在编写一个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即可。

我以前没有遇到过。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

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

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

Word Interop Files

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

Assembly Properties

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

准备发布应用程序时,请更改这些属性。