debugging通过双击现有文件启动Excel VSTO加载项

我已经开发了Excel VSTO 4.0 C#加载项中的一个错误,但只有在双击现有文件才能启动Excel时才会发生。 我试图找出一种方法来启动VS2013debugging器,以便我可以放入一些断点,但是我没有尝试启动debugging器的方式,模拟双击文件启动Excel的过程。

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

  • 启动Excel本身,然后附加到过程
  • 双击一个Excel文件,然后附加到生成的过程
  • 在“启动操作”下的VS项目“debugging”属性中,在“启动外部程序”框中inputExcel Excel.exe的path,并在命令行参数框中input现有Excel文件的path
  • 将Excel.exe作为新的现有项目添加到我的VS解决scheme中,将现有文件的path作为项目属性中的参数,将其设置为解决scheme的启动项目。

这些启动debugging器的方法都没有重现错误。 有没有另一种方法来启动debugging时,双击文件启动Excel?

对于它值得的,我遇到的错误是,当Excel尚未运行时双击现有文件时将会创build一个空的工作簿。 我需要找出哪里/为什么这个空文件正在创build。 如果Excel已经在运行,并且双击某个文件将其打开,则不会发生这种情况。

尝试使用任何日志logging机制来logging代码中的任何操作。 因此,您将能够在运行时查找代码中发生了什么。 例如,您可以将操作写入日志文件。 您可能会发现log4net库有帮助。

这适用于我:

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

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

当您双击一个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 

另一种模仿这些debugging的方法是打开文件并closures文件,手动加载和卸载使用Excel选项的插件。

  1. 在Addin_Startup上放置一个断点。

  2. 开始VSTO项目的正常debugging。

  3. 加载文件。

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

  5. 进入Excel选项,并通过检查来加载你的插件。