无法在即时模式下访问 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
。
当您准备好发布您的应用程序时,将这些属性更改回来。
我正在编写一个 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
。
当您准备好发布您的应用程序时,将这些属性更改回来。