Ich versuche, das bindingRedirect-Element zur Installationszeit zu ändern, indem ich die XmlDocument-Klasse verwende und den Wert direkt ändere. So sieht meine app.config aus:
%Vor%Ich versuche dann den folgenden Code zu verwenden, um 1.0 zu 2.0
zu ändern %Vor%Es wird jedoch die Ausnahme "nicht gefunden" ausgelöst. Wenn ich den Pfad bis zu / configuration / runtime zurücksetze, funktioniert es. Sobald ich jedoch assemblyBinding hinzufüge, wird der Knoten nicht gefunden. Möglicherweise hat das etwas mit den xmlns zu tun? Irgendeine Idee, wie ich das ändern kann? ConfigurationManager hat auch keinen Zugriff auf diesen Abschnitt.
Klingt so, als hätte Ihre Konfigurationsdatei jetzt funktioniert, aber ich dachte, Sie könnten sich noch dafür interessieren, wie Sie verbindliche Weiterleitungen zur Laufzeit anpassen können. Der Schlüssel ist, das Ereignis AppDomain.AssemblyResolve zu verwenden, und die Details sind in diese Antwort . Ich bevorzuge es gegenüber der Verwendung der Konfigurationsdatei, da mein Vergleich der Versionsnummer ein bisschen ausgeklügelter sein kann und ich die Konfigurationsdatei nicht bei jedem Build optimieren muss.
Ich denke, die richtige Xpath-Syntax ist:
/ configuration / runtime / assemblyBinding / dependentAssembly / bindingRedirect @ newVersion
(Sie haben einen Schrägstrich zu viele).
Oder wenn das nicht funktioniert, können Sie das bindingRedirect-Element (mit SelectSingleNode) auswählen:
/ configuration / runtime / assemblyBinding / dependentAssembly / bindingRedirect
Ändern Sie dann das Attribut newVersion dieses Elements.
Tags und Links configuration c# xml xmldocument configuration-files