Автоматизация Visual Studio 2010 из консольного приложения - PullRequest
0 голосов
/ 17 мая 2010

Я пытаюсь запустить следующий код (который я получил от здесь ). Код просто создает новую панель «Вывод» в Visual Studio и записывает в нее несколько строк.

Public Sub WriteToMyNewPane()
    Dim win As Window = _
       dte.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
    Dim ow As OutputWindow = win.Object
    Dim owPane As OutputWindowPane
    Dim cnt As Integer = ow.OutputWindowPanes.Count
    owPane = ow.OutputWindowPanes.Add("My New Output Pane")
    owPane.Activate()
    owPane.OutputString("My text1" & vbCrLf)
    owPane.OutputString("My text2" & vbCrLf)
    owPane.OutputString("My text3" & vbCrLf)
End Sub

Вместо того, чтобы запускать его как макрос, я хочу запустить его как независимое консольное приложение, которое подключается к работающему в данный момент экземпляру Visual Studio 2010. Мне трудно понять, как установить значение ООД . Я думаю, что мне может понадобиться вызвать GetActiveObject, но я не уверен, как. Есть указатели?

1 Ответ

2 голосов
/ 17 мая 2010

Да, это возможно, интерфейс DTE поддерживает внепроцессную активацию. Вот пример кода, который показывает подход:

Imports EnvDTE

Module Module1
    Sub Main()
        Dim dte As DTE = DirectCast(Interaction.CreateObject("VisualStudio.DTE.10.0"), EnvDTE.DTE)
        dte.SuppressUI = False
        dte.MainWindow.Visible = True
        Dim win As Window = dte.Windows.Item(Constants.vsWindowKindOutput)
        Dim ow As OutputWindow = DirectCast(win.Object, OutputWindow)
        Dim owPane As OutputWindowPane = ow.OutputWindowPanes.Add("My New Output Pane")
        owPane.Activate()
        owPane.OutputString("My text1" & vbCrLf)
        owPane.OutputString("My text2" & vbCrLf)
        owPane.OutputString("My text3" & vbCrLf)
        Console.WriteLine("Press enter to terminate visual studio")
        Console.ReadLine()
    End Sub
End Module

Предыдущее и последнее утверждение показывает, почему это не очень практично. Как только ваша программа перестает работать, последний счетчик ссылок на Coclass исчезает, и Visual Studio завершает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...