我正在编写一个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
即可。
我以前没有遇到过。有人可以帮我吗?
答案 0 :(得分:1)
这是由于Word Interop程序集引用(Interop.Microsoft.Office.Core,Interop.Microsoft.Office.Interop.Word和Interop.VBIDE)上的“嵌入式Interop类型”设置被设置为{{1} }。当此设置为True时,编译器仅提取代码中使用的类型定义,并将其嵌入到您的程序中。这很有用,因为它不需要在程序中包含这些Dll,但由于在调试会话中不再可以使用完整类型信息,因此在调试过程中很难“编辑并继续”。解决方案是在开发过程中不要嵌入程序集。
从解决方案资源管理器中,单击“显示所有文件”按钮,以显示“参考”节点。单击节点以将其展开。按住Control键,然后选择三个文件,如下图所示。
选中这些文件后,按“ F4”键显示其属性。
将“嵌入互操作类型”更改为True
(这样做也应将“复制本地”更改为False
。
准备发布应用程序时,请更改这些属性。