Я ранее спрашивал:Добавить ссылку 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: