我有一个使用ClickOnce发布的.NET应用程序.在大多数情况下,一切都适用于此过程,但每隔一段时间,用户将收到一个错误,抛出下面显示的消息而不是打开程序:
应用程序无法启动.联系应用程序供应商.

我在MSDN上找到了ClickOnce Deployments页面中的特定于故障排除的错误(在"附加错误"部分中):
错误信息
应用程序无法启动.联系应用程序发布者.
无法启动应用程序.联系应用程序供应商以获取帮助
描述
这些是无法启动应用程序时出现的一般错误消息,并且找不到其他特定原因.通常,这意味着应用程序以某种方式损坏,或者ClickOnce存储已损坏.
虽然它不是针对此问题显示的错误消息的完全匹配,但我认为它足够接近上述类别的错误.现在解决此问题的方法是简单地删除存储在...中的所有ClickOnce用户设置.
C:\Users\USERNAME\AppData\Local\Apps\2.0
Run Code Online (Sandbox Code Playgroud)
...所以问题是可以承受的,但我的问题是:
我该怎么做才能找出导致这些一般错误的原因,以便我可以阻止它们发生?
2件事:
如果单击“详细信息...”按钮,您将获得一个日志文件,该文件通常显示错误是什么(可能是服务器上的清单文件损坏等)。
如果您说删除本地设置有帮助,那么可能是 user.config 文件已损坏。我们的应用程序中遇到了这个问题 - 我无法找出原因(我的猜测是我写得太Properties.Settings频繁,但我不确定)。无论如何,这是我的解决方法:
public static void Main()
{
if (ApplicationDeployment.IsNetworkDeployed == true)
{
try
{
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
}
catch (ConfigurationErrorsException ex)
{
string filename = ex.Filename;
_logger.Error(ex, "Cannot open config file");
if (File.Exists(filename) == true)
{
_logger.Error("Config file {0} content:\n{1}", filename, File.ReadAllText(filename));
File.Delete(filename);
_logger.Error("Config file deleted");
Properties.Settings.Default.Upgrade();
// Properties.Settings.Default.Reload();
// you could optionally restart the app instead
}
else
{
_logger.Error("Config file {0} does not exist", filename);
}
}
}
// code continues...
}
Run Code Online (Sandbox Code Playgroud)
基本上我尝试读取设置,如果有任何错误 - 记录损坏文件的内容,删除它并继续。
| 归档时间: |
|
| 查看次数: |
21112 次 |
| 最近记录: |