我正在尝试在我的解决方案中启动一个项目的新实例。我知道我可以更改 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 会询问我是否要停止调试(以便构建)。但是当我在上下文菜单中选择“启动新实例”时,它没有!