难以启动附加到Outlook的VS 2010调试器以调试插件

时间:2010-07-07 19:44:33

标签: visual-studio visual-studio-2010 debugging outlook-addin

我正在尝试使用Visual Studio 2010和WPF在C#中编写Outlook Addin,结果很难调试。我希望VS在启动时自动附加到OUTLOOK.EXE,这样我就可以轻松点击断点。所以,我进入了项目的属性>调试选项卡>启动操作并将此设置从“启动项目”(当然这不起作用,因为它是一个DLL)更改为“启动外部程序”。

这似乎有效; Outlook启动,显然附加了调试器。但是,没有遇到任何断点。我注意到当我进入“附加到进程”对话框时,它说Outlook只运行x86(我认为这是不正确的,因为我的manged代码在该地址空间中运行 - 对吗?),所以在Debug选项卡中我单击“设置”面板“启用非托管代码调试”,现在我已经没有想法了。我也无法暂停这个过程,因为我收到一个错误,告诉我该进程没有运行我选择调试的代码类型。我知道我的Addin肯定是加载并执行的,因为我可以看到它正常工作。

作为一种解决方法,我一直在使用System.Diagnostics.Debugger.Launch(),这很烦人,但它确实有效。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

事实证明,Outlook不会在启动时加载CLR(必须在必要时不久加载它),这显然会混淆VS调试器并导致它只调试本机代码。要强制它立即加载CLR,请在同一文件夹中创建一个OUTLOOK.EXE.config文件:

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727"/> <!-- or whatever -->
   </startup>
</configuration>

来自this blog post。然后,即使VS开始附加,它也会调试CLR代码

答案 1 :(得分:1)

以下是如何正确配置VS 2010的绝佳解释:
http://blogs.msdn.com/b/mshneer/archive/2010/03/19/com-shim-wizards-for-vs-2010.aspx
按照“在Visual Studio 2010中调试面向CLR 2.0的加载项”。