2010-05-10 51 views
1

我正在使用C#中的Visual Studio 2005的外接程序,并且如果我从调试器启动它,一切正常,实际安装它(将.addin和.dll添加到加载项目录)会导致它不工作。当Visual Studio加载它时,出现错误“The Add-in”MyAddin“加载失败或导致异常。”出现错误消息:未指定错误,错误号为:80004005,然后向我提供禁用它的功能。如何调试加载过程中引发异常的Visual Studio加载项?

从这里,我无法弄清楚如何调试该加载过程,以便弄清楚发生了什么。我似乎无法在加载dll之前附加到dll,或者以一种使其以相同方式加载的方式专门启动dll。错误信息启动时,我也无法附加。

我到底怎么做到这一点?

编辑:我开始相信这对我的代码来说并不是问题,就像.addin文件一样。鉴于我无法破解构造函数中的代码,并且MyAddin - For Testing.addin能够正常工作,可能这对于生成的MyAddin.addin文件来说是一个更大的问题。

回答

0

睡了之后,我回来了,重新看了一遍。原来生成的.Addin文件有一个引用错误,所以试图加载一个不存在的文件。修复参考后,一切都很好(包括在视觉工作室启动时调用30 Break()...但至少我知道这是工作。)

0

在代码的开头添加下面一行。这会提示你是否打开一个VS窗口进行调试(参见MSDN)。然后,您可以根据需要逐步浏览您的代码。

Debugger.Break(); 

有使用这种方法比的效益“附加到进程”中,你将不必担心每次连接到过程和异常发生之前。

+0

不起作用。错误在任何事件中断之前弹出。 – 2010-05-10 20:52:35

+0

嗯,如果你在代码的开头添加了这行代码,那么它看起来甚至从来没有将它添加到Debugger.Break()语句中,因此你手头上有一些更大的问题。 – 2010-05-10 20:57:34

0

最简单的方法,这可能不会触发同样的异常:

  • 启动时停用负荷。
  • 启动2个Visual Studio实例。
  • 使用工具 - >附加到进程以将其作为调试器附加到其他实例。
  • (可选)还可以设置Debug - > Exceptions以打破所有CLR异常。
  • 加载插件在调试
0

也许这需要在程序devenv.exe的80004005出场本地侧断开点。这通常需要您熟悉WinDbg等。

如果您的公司与Microsoft签有支持合同,请通过http://support.microsoft.com打开支持案例以让专家参与。