关于.net:WPF应用程序在启动时失败,并带有TypeInitializationException

关于.net:WPF应用程序在启动时失败,并带有TypeInitializationException

WPF Application fails on startup with TypeInitializationException

我有一个尝试启动的简单WPF应用程序。 我正在遵循Microsoft模式和实践" WPF的复合应用程序指南"。 我遵循了他们的指示,但是我的WPF应用程序立即失败,并显示" TypeInitializationException"。

InnerException属性表明" System.Windows.Navigation.BaseUriHelper的类型初始值设定项引发了异常。"

这是我的app.xaml:

1
2
3
4
5
6
<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>

这是我的app.xaml.cs(" public App()"抛出的异常):

1
2
3
4
5
6
7
8
public partial class App : Application
{
    public App()
    {
        Bootstrapper bootStrapper = new Bootstrapper();
        bootStrapper.Run();
    }
}

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

误入歧途?


谢谢@ima,您的回答为我指明了正确的方向。我正在使用一个app.config文件,它包含以下内容:

1
2
3
4
5
6
7
8
9
10
11
<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>

看来问题出在元素,因为当我删除它时,应用程序运行良好。我很困惑,因为Visual Studio 2008添加了我选中此框以利用3.5 SP1中可用的"客户端配置文件"的问题。

经过一番摸索之后,我最终得到了一个配置文件,如下所示:

1
2
3
4
5
6
7
8
9
10
11
<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>

哪个有效!

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


App.config文件中的任何错误都可能导致错误,例如在行尾出现*的错字,例如...在行...*的末尾有一个附加的" *"。


您是否使用.config文件?如果是这样,请检查是否有错误。这种初始化错误通常是由无效的XML触发的:如果XAML中没有错误,则XML配置是第一个查找的地方。


对我而言,我已将应用程序设置从另一个应用程序复制到我的app.config中,并复制到一个名为" userSettings"的新部分中。但是,需要在app.config中添加一个定义" userSettings"的" configSections"。我删除了userSettings部分,然后编辑了应用程序设置并保存了它。如果不存在,VS会自动为您创建正确的" userSettings"和" configSections"。


如果您仅看到TypeInitializationException而不显示原因或错误原因的详细信息,请在Visual Studio选项中禁用"仅我的代码"。


深入跟踪InnerExceptions,您可能会发现以下错误:

"Only one element allowed per config file and if present must be the first child of the root element"

在Visual Studio EntityFramework向导将connectionStrings元素添加到顶部之后,发生了此顺序更改


就我而言,这需要添加:

1
2
3
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

App.config(VS 2015 .NET 4.5.2)中的部分

打开任何WPF项目之前构建的内容,检查构建,如果可以,请检查并比较两个项目中的App.config


我遇到了类似的情况。
经过一周的搜索,我找到了解决方案,它确实对我有用。
解决了由于相同问题而产生的2-3个问题。

跟着这些步骤:
检查注册表中的WPF密钥(不存在):
HKEY_LOCAL_MACHINE SOFTWARE Microsoft nET Framework安装程序 nDP v3.0 Setup Windows Presentation Foundation
我的问题是由于注册表中缺少上述密钥。

您可以在注册表中修改和使用以下详细信息:(实际上,您可以保存在文件中并在注册表中导入)

[HKEY_LOCAL_MACHINE SOFTWARE Microsoft nET Framework安装程序 nDP v3.0 Setup Windows Presentation Foundation]
@ =" WPF v3.0.6920.1453"
"版本" =" 3.0.6920.1453"
" WPFReferenceAssembliesPathx86" =" C: Program Files reference程序集 Microsoft Framework v3.0"
" WPFCommonAssembliesPathx86" =" C: Windows System32"
" InstallRoot" =" C: Windows Microsoft.NET Framework v3.0 WPF"
" InstallSuccess" = dword:00000001
" ProductVersion" =" 3.0.6920.1453"
" WPFNonReferenceAssembliesPathx86" =" C: Windows Microsoft.NET Framework v3.0 WPF"

我相信它会起作用。

祝一切顺利。

问候,

乌梅什


您有两个名为"模块"的部分。将两个模块定义都放在一个名为"模块"的部分中。


推荐阅读

    linux启动进命令行?

    linux启动进命令行?,系统,首页,密码,工具,终端,情况,电脑,数字,界面,命令,如

    linux启动蓝牙命令?

    linux启动蓝牙命令?,设备,手机,系统,蓝牙,电脑,管理,网络,密码,通讯,信息,Lin

    linux启动进去命令行?

    linux启动进去命令行?,系统,工具,首页,电脑,终端,材料,密码,命令,快捷键,窗

    linux启动显示命令行?

    linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,l

    linux命令行启动登陆?

    linux命令行启动登陆?,密码,系统,电脑,地址,设计,代码,项目,连续,工具,庞大,L

    linux的u盘启动命令?

    linux的u盘启动命令?,系统,电脑,工具,信息,软件,网上,名称,工作,设备,通用,从

    linux命令行模式清页?

    linux命令行模式清页?,工作,系统,命令,信息,地址,目录,内容,文件,操作,功能,l

    linux防火墙命令启动?

    linux防火墙命令启动?,系统,状态,管理,密码,服务,工具,防火墙,网络,信息,软

    linux启动显示命令行?

    linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,l

    linux进入命令行模式?

    linux进入命令行模式?,系统,地址,情况,工作,命令,终端,首页,信息,目录,界面,l

    linux底线模式命令?

    linux底线模式命令?,系统,档案,密码,状态,工作,命令,模式,文件,明文,界面,lin

    linux启动实例的命令?

    linux启动实例的命令?,密码,软件,环境,系统,管理,情况,工具,数据,设备,位置,l

    linux退出启动命令行?

    linux退出启动命令行?,系统,状态,档案,平台,命令,环境,模式,终端,程序,编辑,l

    关闭启动linux的命令?

    关闭启动linux的命令?,服务,系统,命令,代码,手机,软件,密码,管理,信息,状态,l

    linux中启动服务命令?

    linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,l

    linux启用命令模式?

    linux启用命令模式?,系统,密码,数字,首页,电脑,情况,终端,界面,模式,命令,安

    linux命令行模式联网?

    linux命令行模式联网?,系统,网络,地址,密码,软件,检测,信息,工具,终端,界面,l

    linux永久启动命令?

    linux永久启动命令?,系统,服务,密码,软件,工具,电脑,位置,环境,状态,发行,lin

    linux命令行启动软件?

    linux命令行启动软件?,系统,工具,软件,位置,密码,电脑,首页,代码,环境,地方,l

    linux回到命令行模式?

    linux回到命令行模式?,系统,密码,状态,工具,电脑,终端,界面,环境,地方,命令,