L'applicazione WPF ha esito negativo all'avvio con TypeInitializationException

StackOverflow https://stackoverflow.com/questions/58425

  •  09-06-2019
  •  | 
  •  

Domanda

Ho una semplice applicazione WPF che sto cercando di avviare.Sto seguendo la "Composite Application Guidance for WPF" di Microsoft Patterns and Practices.Ho seguito le loro istruzioni, tuttavia la mia applicazione WPF fallisce immediatamente con una "TypeInitializationException".

La proprietà InnerException rivela che "L'inizializzatore di tipo per 'System.Windows.Navigation.BaseUriHelper' ha generato un'eccezione."

Ecco il mio 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>

Ed ecco il mio app.xaml.cs (eccezione lanciata a "public App()"):

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

Ho impostato la classe "App" come oggetto di avvio nel progetto.

Cosa sta andando fuori strada?

È stato utile?

Soluzione

Grazie @ima, la tua risposta mi ha indirizzato nella giusta direzione.Stavo usando un file app.config e conteneva questo:

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

Sembra che il problema fosse l'elemento <startup> perché quando l'ho rimosso l'applicazione funzionava correttamente.Ero confuso perché Visual Studio 2008 lo ha aggiunto quando ho selezionato la casella per utilizzare il "Profilo cliente" disponibile in 3.5 SP1.

Dopo un po' di confusione nel selezionare e deselezionare la casella, mi sono ritrovato con un file di configurazione come questo:

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

Che funziona!

Non sono sicuro del motivo per cui l'ordine degli elementi in app.config sia importante, ma sembra che lo sia.

Altri suggerimenti

Qualcosa di sbagliato in App.config file potrebbe causare l'errore, ad esempio un errore di battitura * alla fine di una riga, ad es ...</startup> ha un "*" aggiuntivo alla fine della riga ...</startup>*.

Usi il file .config?Se è così, controlla se ci sono errori.Errori di inizializzazione di questo tipo sono spesso innescati da XML non valido:se non sono presenti errori in XAML, la configurazione XML è il primo posto in cui cercare.

Tracciando le InnerExceptions in profondità, potresti trovare il seguente errore:

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

Questa modifica dell'ordine si è verificata dopo che la procedura guidata EntityFramework di Visual Studio ha aggiunto l'elemento ConnectionStrings all'inizio

Se vedi solo TypeInitializationException senza motivo o senza dettagli sull'errore, disabilita Just My Code nelle opzioni di Visual Studio.

Per quanto mi riguarda, avevo copiato le impostazioni dell'app da un'altra applicazione nel mio app.config in una nuova sezione chiamata "userSettings".Tuttavia, è necessario aggiungere anche un "configSections" ad app.config che definisce "userSettings".Ho eliminato la sezione UserSettings, quindi ho modificato le impostazioni dell'app e l'ho salvata.VS crea automaticamente le "userSettings" e le "configSections" corrette se sono assenti.

Hai due sezioni denominate "moduli".Posiziona entrambe le definizioni dei moduli in una sezione denominata "moduli".

Mi sono imbattuto in una situazione simile.Dopo aver cercato per una settimana, ho trovato la soluzione e ha funzionato davvero per me.Ha risolto 2-3 problemi derivanti dallo stesso problema.

Segui questi passi:Controlla la chiave WPF (assenza) nel registro:Hkey_local_machine software microsoft net framework setup ndp v3.0 setup Windows Presentation Foundation Il mio problema era dovuto all'assenza della chiave sopra menzionata nel registro.

Puoi modificare e utilizzare i seguenti dettagli nel registro:(In realtà, puoi salvare nel file e importare nel registro)

Hkey_local_machine software microsoft net framework setup ndp v3.0 setup Windows Presentation Foundation] @= "wpf v3.0.6920.1453" "versione" = "3.0.6920.1453" "wpfrefreencesembliespathx86" = "c:" c: c: c: " File di programma Assemblaggi di riferimento Microsoft Framework v3.0 "" wpfcommonassembliespathx86 "=" c: windows system32 "" installroot "=" c: windows microsoft.net framework v3.0 wpf wpf wpf wpf "" Installasuccess "= dword: 00000001" ProductVeversion "=" 3.0.6920.1453 "" wpfnonreceassembliespathx86 "=" c: windows microsoft.net framework v3.0 wpf "

Sono sicuro che funzionerà.

ti auguro il meglio.

Saluti,

Umeš

Nel mio caso è necessario aggiungere questo:

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

Sezione in App.config (VS 2015 .NET 4.5.2)

Apri qualsiasi progetto WPF creato in precedenza, controlla build, se OK: controlla e confronta App.config in entrambi i progetti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top