使用命令参数调试 VSTO
Debugging VSTO with a Command Argument
我正在开发一个 Excel 加载项,我发现当人们通过打开工作簿 Excel 开始时会出现一些错误。如果他们启动 Excel 然后打开工作簿,一切都很好,但否则就会出现问题。
问题是,我不知道如何调试它,因为我无法使用 Excel 命令参数启动调试器(据我所知)。
我会根据要求添加一些细节:
在 ThisAddIn.cs 中,我有 2 个代码块给我带来了问题。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
try
{
if (isStarted) return;
var xl = this.Application;
xl.WorkbookOpen += WorkbookOpened;
xl.SheetActivate += Workbook_SheetActivate;
var workbook = Application.ActiveWorkbook;
WorkbookOpened(workbook);
isStarted = true;
}
catch (Exception ex)
{
logger.LogIt($"Error 01 - {ex.Message}");
}
}
和:
private void WorkbookOpened(Excel.Workbook workbook)
{
try
{
if (!isStarted)
{
var xl = this.Application;
xl.WorkbookOpen += WorkbookOpened;
xl.SheetActivate += Workbook_SheetActivate;
isStarted = true;
}
int key = Application.Hwnd;
dynamic srVers = null;
if (workbook.CustomDocumentProperties.Count == 0) return;
var srType = workbook.CustomDocumentProperties("InternalDocType");
try
{
srVers = workbook.CustomDocumentProperties("Version");
}
catch (Exception)
{
srVers = null;
}
if (srType.Value != "OurType") return;
Globals.Ribbons.prRibbon.WorkbookOpened(workbook);
}
catch (Exception ex)
{
logger.LogIt($"Error 06 - {ex.Message}");
}
}
当有人启动 Excel 并打开工作簿时,没有错误。但是,如果有人通过打开工作簿来打开 Excel(在文件资源管理器中双击,或右键单击 Excel 并选择工作簿),我会得到错误 06,然后是错误 01,两者都带有 "Object reference not set to an instance of an object."
有什么建议吗?
@ESDictor,你可以在visual studio.
中直接传递excel文件的路径作为命令行参数
我正在开发一个 Excel 加载项,我发现当人们通过打开工作簿 Excel 开始时会出现一些错误。如果他们启动 Excel 然后打开工作簿,一切都很好,但否则就会出现问题。
问题是,我不知道如何调试它,因为我无法使用 Excel 命令参数启动调试器(据我所知)。
我会根据要求添加一些细节:
在 ThisAddIn.cs 中,我有 2 个代码块给我带来了问题。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
try
{
if (isStarted) return;
var xl = this.Application;
xl.WorkbookOpen += WorkbookOpened;
xl.SheetActivate += Workbook_SheetActivate;
var workbook = Application.ActiveWorkbook;
WorkbookOpened(workbook);
isStarted = true;
}
catch (Exception ex)
{
logger.LogIt($"Error 01 - {ex.Message}");
}
}
和:
private void WorkbookOpened(Excel.Workbook workbook)
{
try
{
if (!isStarted)
{
var xl = this.Application;
xl.WorkbookOpen += WorkbookOpened;
xl.SheetActivate += Workbook_SheetActivate;
isStarted = true;
}
int key = Application.Hwnd;
dynamic srVers = null;
if (workbook.CustomDocumentProperties.Count == 0) return;
var srType = workbook.CustomDocumentProperties("InternalDocType");
try
{
srVers = workbook.CustomDocumentProperties("Version");
}
catch (Exception)
{
srVers = null;
}
if (srType.Value != "OurType") return;
Globals.Ribbons.prRibbon.WorkbookOpened(workbook);
}
catch (Exception ex)
{
logger.LogIt($"Error 06 - {ex.Message}");
}
}
当有人启动 Excel 并打开工作簿时,没有错误。但是,如果有人通过打开工作簿来打开 Excel(在文件资源管理器中双击,或右键单击 Excel 并选择工作簿),我会得到错误 06,然后是错误 01,两者都带有 "Object reference not set to an instance of an object."
有什么建议吗?
@ESDictor,你可以在visual studio.