Не удается получить доступ к членам класса Word в прямом режиме

Я пишу настольное приложение 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 в Immediate Window я получаю сообщение об ошибке:

ошибка BC30456: «Символы» не входят в «Диапазон».

Как ни странно, ввод ? aRange.Text работает в Immediate Window.

Я с таким раньше не сталкивался. Может ли кто-нибудь помочь мне в этом?


person Chris Kurz    schedule 26.07.2019    source источник


Ответы (1)


Это связано с тем, что параметр Embed Interop Types в ссылках Word Interop Assemblyreferences (Interop.Microsoft.Office.Core, Interop.Microsoft.Office.Interop.Word и Interop.VBIDE) имеет значение True. Если для этого параметра установлено значение True, компилятор извлекает только определения типов, используемые в вашем коде, и встраивает их в вашу программу. Это полезно тем, что устраняет необходимость включать эти библиотеки DLL вместе с вашей программой, но затрудняет редактирование и продолжение во время отладки, поскольку полная информация о типе больше недоступна для сеанса отладки. Решение состоит в том, чтобы не встраивать сборки, пока вы находитесь в разработке.

В обозревателе решений нажмите кнопку «Показать все файлы», чтобы отобразился узел «Ссылки». Нажмите на узел, чтобы развернуть его. Удерживая нажатой клавишу Control, выберите три файла, как показано на следующем изображении.

Файлы взаимодействия Word

Выбрав эти файлы, нажмите клавишу F4, чтобы отобразить их свойства.

Свойства сборки

Измените Embed Interop Types на False (это также должно изменить Copy Local на True.

Когда вы будете готовы опубликовать свое приложение, измените эти свойства обратно.

person TnTinMn    schedule 26.07.2019
comment
Это исправило раздражающее ограничение. Спасибо за оперативный и точный ответ! - person Chris Kurz; 28.07.2019