2008-09-12 5 views
21

Ich habe eine einfache WPF-Anwendung, die ich versuche zu starten. Ich befolge die Microsoft-Muster und Praktiken "Composite Application Guidance für WPF". Ich habe ihre Anweisungen befolgt, aber meine WPF-Anwendung schlägt sofort mit einer "TypeInitializationException" fehl.WPF-Anwendung schlägt beim Start mit TypeInitializationException fehl

Die InnerException-Eigenschaft zeigt, dass "der Typinitialisierer für 'System.Windows.Navigation.BaseUriHelper' eine Ausnahme ausgelöst hat."

Hier ist meine app.xaml:

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

Ich habe das Set:

<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> 

Und hier meine App.xaml.cs (Ausnahme bei "public App()" geworfen) ist "App" -Klasse als Startobjekt im Projekt

Was geht ab?

Antwort

36

Dank @ima, Ihre Antwort wies mich in die richtige Richtung. Ich war mit einer app.config-Datei und es enthielt diese:

<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> 

Es scheint, das Problem war das <Start> Element, denn wenn ich es entfernt die Anwendung lief gut. Ich war verwirrt, weil Visual Studio 2008 hinzufügte, dass, wenn ich das Kästchen überprüfte, das "Client Profile" zu verwenden, das in 3.5 SP1 verfügbar ist.

Nach einigen Ausmisten über die Überprüfung und un-Kontrollkästchen I mit einer Konfigurationsdatei wie folgt endete:

<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> 

Welche funktioniert!

Ich bin mir nicht sicher, warum die Reihenfolge der Elemente in der app.config wichtig ist - aber es scheint, es ist.

+9

Das Element muss das erste Element sein. Die Reihenfolge des Restes ist irrelevant. – Alex

+0

Wenn ich mich richtig erinnere, war es Visual Studio selbst, das die Elementreihenfolge durch Einfügen des Elements änderte, daher meine Verwirrung. –

+2

hatte genau den gleichen Fehler und wie Alex gesagt hat meine 'configSections' an die Spitze meiner Konfig verschoben und funktioniert jetzt gut. Wird durch den Wechsel vom Client-Profil zu nur .Net 4 verursacht. – windowskm

8

Verwenden Sie die .config-Datei? Wenn ja, überprüfen Sie es auf Fehler. Solche Initialisierungsfehler werden oft durch ungültiges XML ausgelöst: Wenn in XAML keine Fehler auftreten, ist zuerst XML config zu betrachten.

0

Sie haben zwei Abschnitte mit dem Namen "Module". Platzieren Sie beide Moduldefinitionen in einem Abschnitt namens "modules".

0

Ich geriet in eine ähnliche Situation. Nach der Suche nach einer Woche Zeit, fand ich die Auflösung und es hat wirklich für mich funktioniert. Es löste 2-3 Probleme, die wegen des gleichen Problems entstehen.

folgenden Schritte aus: Überprüfen Sie die WPF-Taste (Abwesenheit) in der Registrierung: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ Setup \ Windows Presentation Foundation Mein Problem auf das Fehlen zurückzuführen war von oben genannter Schlüssel in der Registrierung.

können Sie ändern und die Verwendung Angaben in Ihrer Registrierung: (Eigentlich Sie in der Datei und Import in der Registrierung speichern können)

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ Setup \ Windows Presentation Foundation] @ = "WPF v3.0.6920.1453" "Version" = "3.0.6920.1453" "WPFReferenceAssembliesPathx86" = "C: \ Programme \ Referenz-Assemblies \ 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 \"

ich bin sicher, dass es funktionieren wird

alle. beste.

Grüße,

Umesh

11

Alles falsch in der App.config Datei kann den Fehler, wie beispielsweise ein Schreibfehler von * am Ende einer Leitung verursachen, zB ...</startup> hat eine zusätzliche „*“ am Ende der Leitung ...</startup>*.

+0

Perfekt. Du hast meinen Tag gerettet. Ich hatte keine Ahnung, was mit dieser Ausnahme passiert. Ich habe versehentlich "4" in meine app.config eingegeben und das war der Grund für die Ausnahme. Vielen Dank. –

2

die Innerexceptions tief Spur, können Sie den folgenden Fehler finden:

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

Die Bestellung ändern, nachdem Visual Studio EntityFramework Wizard passiert das connection Element nach oben

2

Wenn Sie nur hinzugefügt sehen die TypeInitializationException ohne Grund oder keine Details zu dem, was falsch ist, dann deaktivieren Sie Just My Code in den Visual Studio-Optionen.

0

In meinem Fall ist dies muß hinzugefügt werden:

<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" /> 

Abschnitt bei App.config (VS 2015 .NET 4.5.2)

öffnen Sie ein WPF-Projekt, was builded vor , check build, wenn OK - App.configs bei beiden Projekten überprüfen und vergleichen

1

Für mich hatte ich App-Einstellungen aus einer anderen Anwendung in meine app.config in einen neuen Abschnitt namens "userSettings" kopiert . Es muss jedoch auch ein "configSections" zur app.config hinzugefügt werden, die "userSettings" definiert. Ich habe den Abschnitt userSettings gelöscht, dann die App-Einstellungen bearbeitet und gespeichert. VS erstellt automatisch die richtigen "userSettings" und "configSections" für Sie, wenn sie nicht vorhanden sind.