如何找出导致通用'无法启动应用程序的原因.联系应用程序供应商.ClickOnce错误?

She*_*dan 8 .net clickonce

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

应用程序无法启动.联系应用程序供应商.

在此输入图像描述

我在MSDN上找到了ClickOnce Deployments页面中的特定于故障排除的错误(在"附加错误"部分中):

错误信息

应用程序无法启动.联系应用程序发布者.

无法启动应用程序.联系应用程序供应商以获取帮助

描述

这些是无法启动应用程序时出现的一般错误消息,并且找不到其他特定原因.通常,这意味着应用程序以某种方式损坏,或者ClickOnce存储已损坏.

虽然它不是针对此问题显示的错误消息的完全匹配,但我认为它足够接近上述类别的错误.现在解决此问题的方法是简单地删除存储在...中的所有ClickOnce用户设置.

C:\Users\USERNAME\AppData\Local\Apps\2.0  
Run Code Online (Sandbox Code Playgroud)

...所以问题是可以承受的,但我的问题是:

我该怎么做才能找出导致这些一般错误的原因,以便我可以阻止它们发生?

avs*_*099 4

2件事:

  1. 如果单击“详细信息...”按钮,您将获得一个日志文件,该文件通常显示错误是什么(可能是服务器上的清单文件损坏等)。

  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)

    基本上我尝试读取设置,如果有任何错误 - 记录损坏文件的内容,删除它并继续。