Ранее я спрашивал: Добавить ссылку на dll в макросы Visual Studio
идея создания макросов на моем языке (C #) упрощает создание макросов. Проблема в том, что я не могу отладить dll
Чтобы решить проблему, я попытался:
Я поместил
myClassLibrary.pdb
рядом сmyClassLibrary.dll
, надеясь, что я смогу отлаживать методы в dll, перейдя к ним.Создал сервис 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: