Отладка пользовательской dll, на которую ссылается макрос Visual Studio

Я ранее спрашивал:Добавить ссылку dll на макросы Visual Studio

идея создания макросов на моем языке (C #)упрощает создание макросов. Проблема в том, что я не могу отладить dll

Чтобы решить проблему, я пытался:

  1. Я поместил myClassLibrary.pdbрядом с myClassLibrary.dll, надеясь, что смогу отлаживать методы в dll, вступая в них.

  2. Создал службу WCF. Поскольку я не знал, как ссылаться на службу из vba, я ссылаюсь на нее из библиотеки классов. Проблема в том, что мне нужно использовать такие переменные, как DTE.ActiveDocument, и эти переменные не сериализуемы, что означает, что я не могу передать их службе wcf.

идея работы на C #очень хороша, но невозможность отладки и просмотра происходящего делает ее несколько сложной. Возможно, мне придется перейти к моему более старому варианту, где я создал свой код на C #, скомпилированный, а затем декомпилированный в vba с помощью рефлектора.


Изменить

Думаю, я близок к решению. Я подумал, почему бы не создать макрос в консольном приложении? Я могу получить текст активного документа, но не могу его изменить.

        EnvDTE80.DTE2 MyDte;
        MyDte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject( "VisualStudio.DTE.10.0" );
        Console.WriteLine( "The Edition is " + MyDte.Edition );

        Console.ReadLine( );

        // write to the console the text that is selected. "sometimes it does not work don't know why"
        Console.WriteLine(
            MyDte.ActiveDocument.Selection.Text
        );

обратите внимание, что я добавил следующие ссылки, а также те, которые есть у макросов vba:

enter image description here

9
задан Community 23 May 2017 в 10:32
поделиться