Wie Sie programmgesteuert ändern assemblyBinding in der app.config?

Ich versuche, ändern Sie die bindingRedirect element bei der Installation durch die Verwendung der Klasse XmlDocument und ändern Sie den Wert direkt ein. Hier ist, was mein app.config sieht wie folgt aus:

<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">            
            ...
        </sectionGroup>      
    </configSections>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="MyDll" publicKeyToken="31bfe856bd364e35"/>
          <bindingRedirect oldVersion="0.7" newVersion="1.0"/>
        </dependentAssembly>
     </assemblyBinding>
    </runtime>    
...
</configuration>

Ich dann versuchen, den folgenden code zu ändern 1,0 bis 2,0

private void SetRuntimeBinding(string path, string value)
{
    XmlDocument xml = new XmlDocument();

    xml.Load(Path.Combine(path, "MyApp.exe.config"));
    XmlNode root = xml.DocumentElement;

    if (root == null)
    {
        return;
    }

    XmlNode node = root.SelectSingleNode("/configuration/runtime/assemblyBinding/dependentAssembly/bindingRedirect/@newVersion");

    if (node == null)
    {
        throw (new Exception("not found"));
    }

    node.Value = value;

    xml.Save(Path.Combine(path, "MyApp.exe.config"));
}

Jedoch wirft es die "nicht gefunden" - exception. Wenn ich wieder den Pfad bis /Konfiguration/runtime funktioniert es. Aber sobald ich hinzufügen assemblyBinding, bedeutet es nicht, suchen Sie nach dem Knoten. Möglicherweise hat dies etwas zu tun mit dem xmlns? Irgendeine Idee, wie ich das ändern kann das? ConfigurationManager auch nicht haben Zugang zu diesem Bereich.

InformationsquelleAutor esac | 2009-04-30
Schreibe einen Kommentar