我试图运行下面的代码(我从here得到)。该代码只是在Visual Studio中创建一个新的“输出”窗格并向其写入几行内容。从控制台应用程序自动化Visual Studio 2010
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中我有一个很难搞清楚如何设置的当前运行的实例一个独立的控制台应用程序值为dte。我想我可能需要调用GetActiveObject,但我不知道如何。任何指针?
这似乎是一个非常不寻常的要求。你想达到什么目的?假设它甚至是可能的,这将如何与VS 2010的两个或更多运行实例一起工作? 如果你真的需要VS与外部操作系统进程进行通信,请考虑编写一个自定义扩展,它使用命名管道,WCF,原始套接字等与另一个进程进行交互。 – 2010-05-17 18:24:21
@Simon,我想你是误解......我不希望VS与另一个进程通信...我想要一个控制台应用程序(一个非常简单的)与当前正在运行的VS实例进行通信。这似乎是自动化正在运行的应用程序的一个非常标准的情况(在这种情况下,应用程序是Visual Studio) – JoelFan 2010-05-17 18:27:35
VS <> ConsoleApp通信可以在任何方向。我仍然认为使用VS扩展通过(例如)WCF监听来自其他进程的命令将是一条路。 VS扩展可以完全访问Visual Studio 2010 SDK,并且使用托管代码而不是VBScript编写。此外,您还可以将其他功能构建到扩展中,例如安全性和活动日志记录。 – 2010-05-17 19:52:24