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