使用命令参数调试 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文件的路径作为命令行参数