Question

J'ai une simple application WPF que j'essaie de démarrer.Je suis les modèles et pratiques Microsoft « Composite Application Guidance for WPF ».J'ai suivi leurs instructions, mais mon application WPF échoue immédiatement avec une « TypeInitializationException ».

La propriété InnerException révèle que "L'initialiseur de type pour 'System.Windows.Navigation.BaseUriHelper' a levé une exception."

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

Et voici mon app.xaml.cs (exception levée sur "public App()") :

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

J'ai défini la classe "App" comme objet de démarrage dans le projet.

Qu’est-ce qui s’égare ?

Était-ce utile?

La solution

Merci @ima, votre réponse m'a orienté dans la bonne direction.J'utilisais un fichier app.config et il contenait ceci :

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

Il semble que le problème venait de l'élément <startup> car lorsque je l'ai supprimé, l'application fonctionnait correctement.J'étais confus car Visual Studio 2008 a ajouté cela lorsque j'ai coché la case pour utiliser le "Profil client" disponible dans 3.5 SP1.

Après avoir coché et décoché la case, je me suis retrouvé avec un fichier de configuration comme celui-ci :

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

Ce qui fonctionne !

Je ne sais pas pourquoi l'ordre des éléments dans app.config est important - mais il semble que ce soit le cas.

Autres conseils

Quelque chose ne va pas dans le App.config fichier peut provoquer l'erreur, comme une faute de frappe * à la fin d'une ligne, par exemple ...</startup> a un "*" supplémentaire à la fin de la ligne ...</startup>*.

Utilisez-vous le fichier .config ?Si tel est le cas, vérifiez les erreurs.Des erreurs d'initialisation de ce type sont souvent déclenchées par du XML non valide :s'il n'y a pas d'erreurs dans XAML, la configuration XML est le premier endroit à rechercher.

En suivant les InnerExceptions en profondeur, vous pourriez trouver l'erreur suivante :

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

Ce changement d'ordre s'est produit après que Visual Studio EntityFramework Wizard a ajouté l'élément connectionStrings en haut

Si vous ne voyez que TypeInitializationException sans raison ni aucun détail sur ce qui ne va pas, désactivez Just My Code dans les options de Visual Studio.

Pour moi, j'avais copié les paramètres de l'application d'une autre application dans mon app.config dans une nouvelle section appelée "userSettings".Cependant, il doit également y avoir un "configSections" ajouté au app.config qui définit "userSettings".J'ai supprimé la section userSettings, puis modifié les paramètres de l'application et l'ai enregistré.VS crée automatiquement les "userSettings" et "configSections" corrects pour vous s'ils sont absents.

Vous disposez de deux sections nommées « modules ».Placez les deux définitions de module dans une section nommée « modules ».

J'ai rencontré une situation similaire.Après avoir cherché pendant une semaine, j'ai trouvé la résolution et cela a vraiment fonctionné pour moi.Il a résolu 2-3 problèmes dus au même problème.

Suivez ces étapes:Vérifiez la clé WPF (absence) dans le registre :HKEY_LOCAL_MACHINE Software Microsoft Net Framework Setup NDP V3.0 SETUP Windows Présentation Fondation Mon problème était dû à l'absence de la clé ci-dessus dans le registre.

Vous pouvez modifier et utiliser les détails suivants dans votre registre :(En fait, vous pouvez enregistrer dans un fichier et importer dans le registre)

Hkey_local_machine logiciel Microsoft net framework Configuration ndp v3.0 setup windows présentation Foundation] @ = "wpf v3.0.6920.1453" "version" = "3.0.6920.1453" "wpfreferenceSemblySpathex86" = "C: Program Files Reference 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 "" wpfNonReferenSeSembliespathx86 "=" C: Windows Microsoft.net framework v3.0 wpf "

Je suis sûr que cela fonctionnera.

tous mes vœux.

Salutations,

Umesh

Dans mon cas, il faut ajouter ceci :

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

Section sur App.config (VS 2015 .NET 4.5.2)

Ouvrez n'importe quel projet WPF construit auparavant, vérifiez la construction, si OK - vérifiez et comparez les App.config dans les deux projets

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top