C# Visual Studio 2008和2008 SP1加载项:使用EnvDTE90和EnvDTE90a

C# Visual Studio 2008和2008 SP1加载项:使用EnvDTE90和EnvDTE90a,c#,visual-studio-2008,add-in,breakpoints,visual-studio-addins,C#,Visual Studio 2008,Add In,Breakpoints,Visual Studio Addins,有人知道在Visual Studio 2008()和Visual Studio 2008 SP1()中执行此操作的等效方法吗 我做过普通的谷歌搜索,找到了各种各样的东西,但都不起作用 似乎只有在主动调试的情况下才能工作。我想随时访问断点 注意:请不要发送指向现有代码示例的链接。我已经尝试了我能找到的所有东西。VS2005代码(EnvDTE80)也可以与VS2008一起使用。EnvDTE90只是添加了一些新功能,但基本功能仍然需要EnvDTE80和EnvDTE。我终于找到了一些代码。Kristof

有人知道在Visual Studio 2008()和Visual Studio 2008 SP1()中执行此操作的等效方法吗

我做过普通的谷歌搜索,找到了各种各样的东西,但都不起作用

似乎只有在主动调试的情况下才能工作。我想随时访问断点


注意:请不要发送指向现有代码示例的链接。我已经尝试了我能找到的所有东西。

VS2005代码(EnvDTE80)也可以与VS2008一起使用。EnvDTE90只是添加了一些新功能,但基本功能仍然需要EnvDTE80和EnvDTE。

我终于找到了一些代码。KristoferA的回答部分正确,因为可以使用相同的API,但代码不能一字不差地工作。我就是这样让它工作的:

EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.9.0");

foreach (EnvDTE80.Breakpoint2 bp in dte2.Debugger.Breakpoints)
{
     //do some things
}

我同样的VS2005代码不会在VS2008中运行,正如您在问题中看到的那样。
EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.9.0");

foreach (EnvDTE80.Breakpoint2 bp in dte2.Debugger.Breakpoints)
{
     //do some things
}