Niedawno przeniosłem się do systemu Vista x64 i nagle mój blok aplikacji Machine.config appSettings nie jest odczytywany przez żadne zestawy .NET.appSettings nie jest czytane z pliku machine.config w systemie Vista
Zaraz po configSections, a przed configProtectedData w C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ config \ machine.config, mam:
<appSettings>
<add key="foo" value="blah"/>
</appSettings>
<system.runtime.remoting>
<customErrors mode="Off"/>
</system.runtime.remoting>
Gdyby zapisać go poprzez uruchomienie Notepad ++ jako administrator, ponieważ jest zablokowany w inny sposób, prawdopodobnie z ważnych powodów. Uruchomiony następujący kod w SnippetCompiler lub VS .NET 2008:
foreach(var s in ConfigurationManager.AppSettings.AllKeys)
{
Console.WriteLine(s);
}
AppSettingsReader asr = new AppSettingsReader();
Console.WriteLine(asr.GetValue("foo", typeof(string)));
pisze się bez kluczy i kończy się niepowodzeniem z następującym wyjątkiem:
---
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()
---
Aplikacja piszę używa machine.config jako awaryjne dla znalezienia które środowisko powinno być uruchomione przez użytkownika, jeśli nie można go znaleźć w pliku app.config, więc chciałbym uniknąć przepisywania mojej aplikacji, aby znaleźć coś, co powinno działać tak samo, jak w 2000 r. i XP.