启动特定项目的新实例

时间:2014-09-22 15:46:42

标签: visual-studio visual-studio-debugging envdte visual-studio-package

我正在尝试在我的解决方案中启动项目的新实例。我知道我可以更改StartupProject然后启动调试器,但在我的情况下,这不起作用,因为调试器可能已经在运行,我不想再改变启动项目。

var dte2 = Package.GetGlobalService(typeof(DTE)) as DTE2;
foreach (Project project in dte2.Solution.Projects)
{
    if(project.UniqueName == "blahblah";
    {
         // Whatever right-click on a project
         // Debug -> Start New Instance 
         // does.
    }
}

我不想使用dte2.Debugger.Go(),因为启动项目不是我想要启动的项目。

如何手动开始调试项目的新实例?

更新: 我目前的解决方案(解决方法)如下所示:

dte2.Solution.SolutionBuild.BuildProject(
    dte2.Solution.SolutionBuild.ActiveConfiguration.Name,
    "Test",
    true);

Process process = Process.Start(pPath);
Processes processes = dte2.Debugger.LocalProcesses;
foreach (EnvDTE.Process proc in processes)
{
    if (proc.ProcessID == process.Id)
    {
        Debug.Write("Attaching to: " + proc.Name + " - " + proc.ProcessID);
        proc.Attach();
    }
}

它基本上构建项目,在新进程中启动exe,然后附加到进程。我现在唯一的问题是,当我开始构建并且正在进行调试会话时,Visual Studio会问我是否要停止调试(为了构建)。但是当我在上下文菜单中选择“启动新实例”时,却没有!

0 个答案:

没有答案