2

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

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() 因为启动项目不是我想要启动的项目。

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

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

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 会询问我是否要停止调试(以便构建)。但是当我在上下文菜单中选择“启动新实例”时,它没有!

4

0 回答 0