¿Cómo modificar programáticamente assemblingBinding en app.config?

Estoy intentando cambiar el elemento bindingRedirect en el momento de la instalación utilizando la clase XmlDocument y modificando el valor directamente. Así es como se ve mi app.config:

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

Intento usar el siguiente código para cambiar 1.0 a 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"));
}

Sin embargo, arroja la excepción 'no encontrada'. Si respaldo la ruta a / configuration / runtime, funciona. Sin embargo, una vez que agrego assemblyBinding, no encuentra el nodo. ¿Posiblemente esto tiene algo que ver con los xmlns? ¿Alguna idea de cómo puedo modificar esto? ConfigurationManager tampoco tiene acceso a esta sección.

Respuestas a la pregunta(3)

Su respuesta a la pregunta