Как увидеть изменения текста документа Word в ThisDocument_New () - PullRequest
0 голосов
/ 30 марта 2020

Я подумываю о переносе всех наших шаблонов Word из VBA в VSTO и у меня возникает следующий вопрос: Как я могу отлаживать код в проекте VSTO?

В отличие от отладки в VBA, я не вижу результаты выполнения кода построчно при пошаговом выполнении процедуры.

Например, я создаю прототип документа Word в VS 2019:

using ...;
namespace MyCompany.OfficeTemplates.MyTemplate
    {
        public partial class ThisDocument
        {

            private void ThisDocument_Startup(object sender, System.EventArgs e)
            {
            }

            private void ThisDocument_Shutdown(object sender, System.EventArgs e)
            {
            }

            private void ThisDocument_New()
            {
                var currentSelection = Application.Selection;
                currentSelection.TypeText("This text was added by using code.");
            }

            #region VSTO Designer generated code

            /// ...<summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InternalStartup()
            {
                this.Startup += new System.EventHandler(ThisDocument_Startup);
                this.Shutdown += new System.EventHandler(ThisDocument_Shutdown);
                this.New += new Microsoft.Office.Interop.Word.DocumentEvents2_NewEventHandler(this.ThisDocument_New);
            }

            #endregion

        }
    }

Я планирую добавить гораздо больше кода (показ диалогового окна, выбор клиентов, выбор языка и другая информация) в ThisDocument_New() событие. Почему текст не вставляется в текстовый документ, когда я перехожу по команде ... TypeText () ... с отладчиком?!?

Вместо этого он вставляется, когда отладчик оставляет ThisDocument_New()?

Чего мне не хватает и куда еще можно поместить мой код, когда ThisDocument_New () не разрешает отладку пропппера?

1 Ответ

0 голосов
/ 06 апреля 2020

То, что не видно, что происходит во время выполнения кода, типично для VSTO. Отладка отличается от VBA - результаты видны только после завершения кода . Ничто не может быть сделано, чтобы изменить это - это в природе вещи (. NET <-> COM-взаимодействие).

Я сам с этим боролся, когда начинал с VSTO, и мне пришлось научиться обходить его.

Обычно, если во время устранения неполадок необходимо видеть, что происходит, как это происходит, Сначала я тестирую в VBA, а затем переношу этот код в VSTO.

Если необходимо проверить значения, сгенерированные кодом во время его выполнения, я вставляю несколько строк Debug.Print, которые можно проследить в окне вывода Visual Studio при переходе по коду.

Также возможно отслеживать, что назначено объектам при пошаговом выполнении кода.

...