通过双击现有文件启动时调试 Excel VSTO 加载项

Debug Excel VSTO add-in when launched by double-clicking existing file

我在我开发的 Excel VSTO 4.0 C# 加载项中有一个错误,但它仅在双击现有文件启动时才会出现 Excel。我正在尝试找出一种启动 VS2013 调试器的方法,以便我可以放置一些断点,但是 none 我尝试启动调试器的方式模仿启动 Excel 的过程双击文件。

到目前为止我尝试过的方法:

None 这些用于启动调试器的方法重现了错误。双击文件启动时是否有另一种启动调试的方法Excel?

值得一提的是,我遇到的错误是当 Excel 尚未 运行 时双击现有文件时将创建一个空工作簿。我需要找出创建该空文件的位置/原因。如果 Excel 已经是 运行 并且您双击文件将其打开,则不会发生这种情况。

尝试使用任何日志记录机制来记录代码中的任何操作。因此,您将能够在运行时找到代码中发生的事情。例如,您可以将操作写入日志文件。您可能会发现 log4net 库很有用。

我假设您在处理 WorkbookOpen 事件的方法中设置断点。

当您双击 Excel 文件时,它会被加载并引发事件 WorkbookOpen。 VSTO 加载项尚未加载,因此您无法获取该事件。加载工作簿后,Excel 加载 VSTO 加载项。

因此,当加载项加载时,AddinStartup 的处理程序就会起作用。 在 vb.net 中,处理程序行显示为...

Private Sub ThisAddIn_Startup() Handles Me.Startup

您现在可以在 ThisAddIn_Startup

中检查加载的工作簿
If Application.ActiveWorkbook IsNot Nothing Then
    DoSomething(Application.ActiveWorkbook)
End If

另一种模仿这些调试的方法是打开文件和关闭文件,手动使用 excel 选项加载和卸载插件。

  1. 在Addin_Startup上打断点。

  2. 开始VSTO Project的正常调试。

  3. 加载文件。

  4. 进入 excel 选项并通过取消选中它来卸载您的插件。

  5. 进入 excel 选项并检查加载插件。

这对我有用:

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
  System.Diagnostics.Debugger.Launch();

  ...
}