通过双击现有文件启动时调试 Excel VSTO 加载项
Debug Excel VSTO add-in when launched by double-clicking existing file
我在我开发的 Excel VSTO 4.0 C# 加载项中有一个错误,但它仅在双击现有文件启动时才会出现 Excel。我正在尝试找出一种启动 VS2013 调试器的方法,以便我可以放置一些断点,但是 none 我尝试启动调试器的方式模仿启动 Excel 的过程双击文件。
到目前为止我尝试过的方法:
- 启动 Excel 本身然后附加到进程
- 双击 Excel 文件,然后附加到生成的进程
- 在启动操作下的VS项目调试属性中,在启动外部程序框中输入Excel Excel.exe的路径,并在命令中输入现有Excel文件的路径行参数框
- 将 Excel.exe 作为新的现有项目添加到我的 VS 解决方案中,并将现有文件的路径作为项目属性中的参数,并将其设置为解决方案的启动项目。
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 选项加载和卸载插件。
在Addin_Startup上打断点。
开始VSTO Project的正常调试。
加载文件。
进入 excel 选项并通过取消选中它来卸载您的插件。
进入 excel 选项并检查加载插件。
这对我有用:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
System.Diagnostics.Debugger.Launch();
...
}
我在我开发的 Excel VSTO 4.0 C# 加载项中有一个错误,但它仅在双击现有文件启动时才会出现 Excel。我正在尝试找出一种启动 VS2013 调试器的方法,以便我可以放置一些断点,但是 none 我尝试启动调试器的方式模仿启动 Excel 的过程双击文件。
到目前为止我尝试过的方法:
- 启动 Excel 本身然后附加到进程
- 双击 Excel 文件,然后附加到生成的进程
- 在启动操作下的VS项目调试属性中,在启动外部程序框中输入Excel Excel.exe的路径,并在命令中输入现有Excel文件的路径行参数框
- 将 Excel.exe 作为新的现有项目添加到我的 VS 解决方案中,并将现有文件的路径作为项目属性中的参数,并将其设置为解决方案的启动项目。
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 选项加载和卸载插件。
在Addin_Startup上打断点。
开始VSTO Project的正常调试。
加载文件。
进入 excel 选项并通过取消选中它来卸载您的插件。
进入 excel 选项并检查加载插件。
这对我有用:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
System.Diagnostics.Debugger.Launch();
...
}