4 votes

Obtention de TypeInitializationException dans VS2012, mais pas dans 2010

Je reçois un TypeInitializationException lorsque j'essaie de déboguer mon application dans Visual Studio 2012, mais je suis capable d'exécuter l'application dans Visual Studio 2010 sans erreur.

J'ai récemment déplacé un tas de choses (y compris mon projet et plusieurs références) afin de les intégrer dans un système de contrôle de version. J'ai dû relier plusieurs éléments pour que tout soit lié correctement lors de l'extraction sur un système différent.

Notre environnement de développement est mixte (VS2010 et VS2012). L'exécution à partir de VS2010 n'a produit aucune erreur. Mais lorsque j'ai exécuté le débogage dans VS2012, j'ai reçu le message suivant TypeInitializationException exception.

Le projet dans le original (où il résidait avant d'être déplacé à des fins de contrôle de version) fonctionne toujours correctement dans VS2010 et VS2012.

Il y a un drapeau ou un paramètre ou quelque chose qui s'est un peu mélangé quelque part, mais je ne suis pas sûr où. Quelqu'un a-t-il une idée de ce que je peux faire pour que cela fonctionne également dans VS2012 ?

(merci de m'indiquer les informations de code ou de configuration à inclure ici, le cas échéant)

InnerException :

L'initialisateur de type pour 'System.Windows.Navigation.BaseUriHelper' a généré une exception.

(Deuxième) InnerException :

L'initialisateur de type pour 'MS.Internal.TraceDependencyProperty' a généré une exception.

10voto

Evil Closet Monkey Points 3874

Les commentaires sur la question initiale ont suscité d'autres recherches, qui ont finalement abouti à une solution.

En recherchant "The type initializer for 'System.Windows.Navigation.BaseUriHelper' threw an exception". J'ai trouvé la question suivante sur StackOverflow : L'application WPF échoue au démarrage avec TypeInitializationException

Comme pour cette question, j'avais ajouté un <startup> </startup> à mon fichier "app.config". L'endroit où ce bloc de balises a été placé a fait la différence :

Provoque une erreur dans VS2012 :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
    </startup>
    <configSections>
       ...
    </configSections>
    <applicationSettings>
       ...
    </applicationSettings>
</configuration>

Tout fonctionne bien :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
       ...
    </configSections>
    <applicationSettings>
       ...
    </applicationSettings>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
    </startup>
</configuration>

Déplacer le bloc de tags vers le bas a fait l'affaire !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X