我有一个尝试启动的简单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"
我相信它会起作用。
祝一切顺利。
问候,
乌梅什
您有两个名为"模块"的部分。将两个模块定义都放在一个名为"模块"的部分中。