我试图在应用程序启动时捕获App.config文件中的错误,但我没有得到。 所有全局错误事件(如AppDomain.CurrentDomain.UnhandledException或Application.DispatcherUnhandledException)都无法捕获incorret格式的App.Config文件,即使未调用OnStartup方法App.xaml,应用程序也会崩溃。
示例无效的app.config:
<configuration>
<configSections>
<section name="XXXX" type="TesteAssembly.MainSpace, TesteAssembly" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
但是,我发现如果App.config文件格式错误,则要创建Application类的实例,将引发异常。因此,我找到的唯一解决方案是删除App.xaml,使用main方法创建一个类并手动启动Application实例(App.xaml基类)。
示例:
[STAThread]
public static void Main(string[] args)
{
try
{
Application p = new Application();
p.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
p.Run();
}
catch (Exception)
{
throw;
}
}
这种情况还有另一种解决办法吗?
答案 0 :(得分:1)
尝试手动加载此配置以诊断问题。将此代码放在Main()的开头。部分类型名称很可能是错误的:
var configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);