不稳定的Clickonce部署应用程序 - 无法加载文件或程序集....模块有望包含清单

时间:2014-08-11 12:45:52

标签: c# .net deployment clickonce

我工作的公司最近决定转向我们的一个内部应用程序的ClickOnce部署策略,这些应用程序需要由大约一百台生产计算机运行。之前构建.msi和安装的策略在更新之间工作正常,我们从未在更新后遇到任何问题。现在我们已经切换到ClickOnce,我们遇到了很多问题。初始安装后,一切正常,直到我们推出第一次更新。所有计算机都成功更新并运行该软件当天。第二天早上,当他们被启动时,许多计算机都出错:

无法加载文件或程序集“ _______ ,版本= 1.0.0.0.Culture = neutral,PublicKeyToken = null”或其中一个dependecies。该模块应该包含一个程序集清单。

如果空白是作为应用程序一部分的两个C#dll之一。

我们从未在开发中遇到这些错误,我无法在我尝试的任何计算机上重现该问题。当我尝试重新启动计算机时,即使其中一台生产计算机也没有抛出错误(硬复位和软复位)。

以下是我们尝试过的一些事情:

  • 确保主应用程序和所有dll都是为任何CPU构建的,因为这似乎经常引起我们的研究。通过查看构建的可执行文件的程序集信息已经验证了这一点。

  • 确保所有dll和清单文件都在ClickOnce文件夹中的正确位置,将它们与工作计算机进行比较显示没有实际区别

每次重启都不会导致所有计算机崩溃,这似乎是偶然的,有些在特定的重启时很好,而有些则没有。这些计算机的所有映像都是相同的,并且两个构建之间没有任何外部依赖关系发生变化,所以我遇到了在那里发现任何差异的问题。

任何遇到过类似问题和/或知道在ClickOnce部署的应用程序中可能导致这些问题的人的任何见解都将受到赞赏。


一些进一步的细节。:

深入了解其中一台计算机上存在问题的特定DLL,它几乎看起来就像是一个空白的dll,因为当我运行一个实用工具时,它不会显示有关其程序集的任何信息它。然而,它应该是完美的尺寸,因此它不能完全空白(408KB)。任何线索为什么会这样?当其他计算机从同一个地方获得正确的dll并且应用程序在原始运行中具有正确的dll时,为什么ClickOnce会下载空白dll?

我们“修复”这种方式的方法是卸载并重新安装软件,该软件基本上可以修复当天或直到系统重新启动。虽然我们已经打了一两台计算机,即使重新安装也会出现同样的错误,即使初始安装没问题。

希望这可以提供帮助。

0 个答案:

没有答案