WPF应用程序在启动时因TypeInitializationException而失败

Adr*_*ark 21 .net wpf prism

我有一个简单的WPF应用程序,我试图开始.我遵循Microsoft模式和实践"WPF的复合应用程序指南".我按照他们的指示操作,但是我的WPF应用程序立即失败并出现"TypeInitializationException".

InnerException属性显示"System.Windows.Navigation.BaseUriHelper的类型初始值设定项引发异常."

这是我的app.xaml:

<Application x:Class="MyNamespace.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>         
    </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

这是我的app.xaml.cs(在"public App()"中引发的异常):

public partial class App : Application
{
    public App()
    {
        Bootstrapper bootStrapper = new Bootstrapper();
        bootStrapper.Run();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已将"App"类设置为项目中的启动对象.

什么是误入歧途?

Adr*_*ark 37

谢谢@ima,你的回答指出了我正确的方向.我使用的是app.config文件,它包含:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" sku="Client"/>
  </startup>
  <configSections>
    <section name="modules" type="Microsoft.Practices.Composite.Modularity.ModulesConfigurationSection, Microsoft.Practices.Composite"/>
  </configSections>
  <modules>
    <module assemblyFile="Modules/MyNamespace.Modules.ModuleName.dll" moduleType="MyNamespace.Modules.ModuleName.ModuleClass" moduleName="Name"/>
  </modules>
</configuration>
Run Code Online (Sandbox Code Playgroud)

似乎问题是<startup>元素,因为当我删除它时,应用程序运行正常.我很困惑因为Visual Studio 2008添加了当我选中该框以使用3.5 SP1中提供的"客户端配置文件"时.

关于检查和取消选中框后,我最终得到了一个像这样的配置文件:

<configuration>
  <configSections>
    <section name="modules" type="Microsoft.Practices.Composite.Modularity.ModulesConfigurationSection, Microsoft.Practices.Composite"/>
  </configSections>
  <modules>
    <module assemblyFile="Modules/MyNamespace.Modules.ModuleName.dll" moduleType="MyNamespace.Modules.ModuleName.ModuleClass" moduleName="Name"/>
  </modules>
  <startup>
    <supportedRuntime version="v2.0.50727" sku="Client"/>
  </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

哪个有效!

我不确定为什么app.config中的元素顺序很重要 - 但它似乎是.

  • <configSections>元素必须是第一个.其余的顺序无关紧要. (9认同)
  • 有完全相同的错误,并且亚历克斯说我的`configSections`移动到我的配置的顶部,现在工作正常.从客户端配置文件更改为.Net 4. (2认同)

Lin*_*ang 11

App.config文件中的任何错误都可能导致错误,例如*行尾的拼写错误,例如在行尾...</startup>有一个额外的"*" ...</startup>*.


ima*_*ima 8

你使用.config文件吗?如果是,请检查错误.这种类型的初始化错误通常由无效的XML触发:如果XAML中没有错误,则首先要查看XML配置.