我在我开发的Excel VSTO 4.0 C#加载项中有一个错误,但只有在双击现有文件才能启动Excel时才会出现错误。我试图找到启动VS2013调试器的方法,以便我可以放入一些断点,但我试图启动调试器的方式都没有模仿双击启动Excel的过程在一个档案上。
到目前为止我尝试过的方式:
启动调试器的这些方法都没有重现错误。还有另一种方法可以在双击文件以启动Excel时开始调试吗?
对于它的价值,我遇到的错误是当Excel尚未运行时双击现有文件时将创建一个空工作簿。我需要找出创建空文件的位置/原因。如果Excel已在运行并且您双击文件以将其打开,则不会发生这种情况。
答案 0 :(得分:1)
这对我有用:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
System.Diagnostics.Debugger.Launch();
...
}
答案 1 :(得分:0)
尝试使用任何日志记录机制来记录代码中的任何操作。因此,您将能够在运行时找到代码中发生的事情。例如,您可以将操作写入日志文件。您可能会发现log4net库很有用。
答案 2 :(得分:0)
我假设您在处理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选项加载和卸载插件。
在Addin_Startup上添加断点。
开始VSTO项目的正常调试。
加载文件。
进入excel选项并通过取消选中来卸载您的插件。
进入excel选项并通过检查加载您的插件。