मैं XmlDocument क्लास का उपयोग करके और सीधे मान को संशोधित करके स्थापित समय पर बाध्यकारी रेडियोधर्मी तत्व को बदलने का प्रयास कर रहा हूं।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>
मैं तो 1,0 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"));
}
हालांकि करने के लिए, यह 'नहीं मिला' अपवाद फेंकता बदलने के लिए निम्नलिखित कोड का उपयोग करने का प्रयास करें: यहाँ मेरी app.config दिखता है की तरह है। यदि मैं पथ/कॉन्फ़िगर/रनटाइम तक पथ वापस करता हूं तो यह काम करता है। हालांकि एक बार जब मैं असेंबली बाइंडिंग जोड़ता हूं, तो उसे नोड नहीं मिलता है। शायद यह xmlns के साथ कुछ करने के लिए है? कोई विचार है कि मैं इसे कैसे संशोधित कर सकता हूं? कॉन्फ़िगरेशन प्रबंधक को इस खंड तक पहुंच नहीं है।
बस एक नोट, मैंने अपवाद फेंक दिया क्योंकि यह एक सेटअप प्रोजेक्ट का हिस्सा है और इस तरह इंस्टॉलर को किसी भी त्रुटि के बारे में अधिसूचित किया जाता है। संशोधित होने पर विधि को सही या गलत वापस करना बेहतर होगा। – esac