调试开发和部署之间的 Excel VSTO 差异



我刚刚完成了对 2010-Excel 以前的 VSTO 加载项的更新。 它具有功能区自定义,包括启动窗口窗体。 在我的开发机器上,它工作正常并加载表单,但在部署的版本中它不起作用。 它也不会在我能够捕获的任何地方抛出异常,而且我不知道我可以做些什么来阻止窗口加载。

没有更好的主意,我开始输入断点和消息框:

Private Sub RibbonControlPanelButton_Click(sender As Object, e As RibbonControlEventArgs) Handles RibbonControlPanelButton.Click
    Environment.SetEnvironmentVariable("VSTO_LOGALERTS", 1)
    Environment.SetEnvironmentVariable("VSTO_SUPPRESSDISPLAYALERTS", 0)
    MsgBox("1")
    Dim cp1 As New ControlPanel
    MsgBox("2")
    cp1.Show()
    MsgBox("3")
    cp1 = Nothing
    MsgBox("4")
End Sub

在这个测试中,我把它变成了"1",所以失败的是制作了一个New ControlPanel这是我的窗口形式。 我尝试在

Private Sub ControlPanel_Load(sender As Object, e As EventArgs) Handles MyBase.Load

但他们都没有成功。 因此我知道它甚至没有加载。 如何获取有关出现问题的更多信息? 我看不到任何地方记录的任何异常。 我以前的版本仍然有效(cp1制作并显示(,但是我已经调整了很多东西,我不想回到它来重建。

我有一种误解,认为如果它在开发环境中工作,它将在几乎相同的部署环境中工作。 有没有办法使这些合并? 我觉得如果我可以在VS2012中与问题进行交互,我可以更快地进行调试,但是当我安装VS2012的那一刻,事情就可以了......

我想出了答案。 虽然我没有资格正式称其为 MS 错误,但似乎是这样。

它一直未能成为胜利的新实例。表单,但是当我尝试从功能区启动它时,我没有收到任何类型的错误。 我更改了this workbook的启动条件,以便它尝试创建 Win Form 的新实例。

就在那时,我收到一个错误,找不到PowerPacks 10。 这看起来很奇怪,因为在我的Clickonce部署中,PowerPacks 10被列为先决条件。 更令人困惑的是,之前在这里安装了"公共"版本的电源组,即版本 3。 不知何故,这通过了安装程序的检查,但不是程序所需要的。 当我从安装程序中的链接DL版本(实际上是版本10(时,一切正常。

我已经仔细检查并发现 v10 被列为 prereq,但由于某种原因,它没有被 Clickonce 安装程序捕获。 我认为我以前的程序版本有效但当前版本不起作用的原因是在我的表单中使用了不同类型的行(所有原因!

希望这能省去别人的心痛。

最新更新