0

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

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

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我的 windows 窗体。我试着在里面放一系列类似的笔记

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

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

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

4

1 回答 1

0

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

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

就在那时我收到了找不到 PowerPacks 10 的错误消息。这看起来很奇怪,因为在我的 Clickonce 部署中,PowerPacks 10 被列为先决条件。之前在这里安装了“公共”版本的 powerpacks ,即版本 3,这一事实进一步混淆了它。不知何故,它通过了安装程序的检查,但不是程序需要的。当我从安装程序中的链接中DL 版本时,实际上是 10 版,一切正常。

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

希望这可以拯救别人的心痛。

于 2013-10-16T13:10:58.783 回答