Question

Je suis récemment passé à Vista x64 et, tout à coup, mon bloc machine.config appSettings n'est pas lu par les assemblys .NET.

Juste après configSections et avant configProtectedData dans C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config, j'ai:

<appSettings>
    <add key="foo" value="blah"/>
</appSettings>
<system.runtime.remoting>
    <customErrors mode="Off"/>
</system.runtime.remoting>

Il a fallu le sauvegarder en exécutant Notepad ++ en tant qu'administrateur, car c'est verrouillé sinon, probablement pour de bonnes raisons. Exécution du code suivant dans SnippetCompiler ou VS .NET 2008:

    foreach(var s in ConfigurationManager.AppSettings.AllKeys)
    {
        Console.WriteLine(s);   
    }

    AppSettingsReader asr = new AppSettingsReader();

    Console.WriteLine(asr.GetValue("foo", typeof(string)));

n'écrit aucune clé et échoue avec l'exception suivante:

---
The following error occurred while executing the snippet:
System.InvalidOperationException: The key 'foo' does not exist in the appSettings configuration section.
    at System.Configuration.AppSettingsReader.GetValue(String key, Type type)
    at MyClass.RunSnippet()
    at MyClass.Main()
---

L'application que j'écris utilise machine.config comme solution de secours pour savoir dans quel environnement un utilisateur doit s'exécuter s'il ne peut pas être trouvé dans app.config. Par conséquent, j'aimerais éviter de devoir réécrire mon application. pour trouver quelque chose qui devrait fonctionner de la même manière qu'en 2000 et XP.

Était-ce utile?

La solution

Résolu avec la ligne de code suivante:

ConfigurationManager.OpenMachineConfiguration().FilePath

qui a renvoyé:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config

au lieu de:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

J'ai oublié d'utiliser 64 bits maintenant. L'ajout de la section appSettings dans le fichier de configuration approprié a résolu le problème.

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