2009-07-28 14 views
5

मैं मानक पर रीडायरेक्ट करना चाहता हूं। नेट कॉन्फ़िगरेशन प्रबंधक श्रेणी किसी अन्य फ़ाइल में; पूरी तरह से। पथ रनटाइम पर निर्धारित किया जाता है इसलिए मैं configSource या ऐसा नहीं कर सकता (यह एक डुप्लिकेट प्रश्न नहीं है - मैंने दूसरों को देखा है)।कॉन्फ़िगरेशन प्रबंधक को किसी अन्य फ़ाइल पर रीडायरेक्ट करें

मैं अनिवार्य रूप से कवर करने के लिए एएसपी.Net क्या कर रहा है नकल करने की कोशिश कर रहा हूं। इस प्रकार न केवल मेरी कक्षाओं को नई कॉन्फ़िगरेशन फ़ाइल से पढ़ा जाना चाहिए, बल्कि किसी भी मानक .Net सामान (जिसे मैं विशेष रूप से काम करने की कोशिश कर रहा हूं वह system.codeDom तत्व है)।

मैंने खुले परावर्तक को तोड़ दिया है और एएसपी.Net यह कैसे करता है यह देखना शुरू कर दिया - यह सुंदर बालों वाली और पूरी तरह से अनियंत्रित है। मैं उम्मीद कर रहा था कि किसी और ने प्रक्रिया को उलट दिया है। जरूरी नहीं कि एक पूर्ण समाधान की तलाश हो (अच्छा होगा) लेकिन केवल दस्तावेज

उत्तर

9

मुझे अंत में यह पता चला। एक सार्वजनिक दस्तावेज का अर्थ यह है - लेकिन यह नेट फ्रेमवर्क की गहराई में छिपा हुआ है। अपनी खुद की कॉन्फ़िगरेशन फ़ाइल को बदलने के लिए प्रतिबिंब की आवश्यकता होती है (कॉन्फ़िगरेशन प्रबंधक को रीफ्रेश करने से अधिक नहीं करना); लेकिन एक ऐपडोमेन की कॉन्फ़िगरेशन फ़ाइल को बदलना संभव है जिसे आप सार्वजनिक एपीआई के माध्यम से बनाते हैं।

class Program 
{ 
    static void Main(string[] args) 
    { 
     // Setup information for the new appdomain. 
     AppDomainSetup setup = new AppDomainSetup(); 
     setup.ConfigurationFile = "C:\\my.config"; 

     // Create the new appdomain with the new config. 
     AppDomain d2 = AppDomain.CreateDomain("customDomain", AppDomain.CurrentDomain.Evidence, setup); 

     // Call the write config method in that appdomain. 
     CrossAppDomainDelegate del = new CrossAppDomainDelegate(WriteConfig); 
     d2.DoCallBack(del); 

     // Call the write config in our appdomain. 
     WriteConfig(); 

     Console.ReadLine(); 
    } 

    static void WriteConfig() 
    { 
     // Get our config file. 
     Configuration c = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

     // Write it out. 
     Console.WriteLine("{0}: {1}", AppDomain.CurrentDomain.FriendlyName, c.FilePath); 
    } 
} 

आउटपुट::

customDomain: C:\my.config 
InternalConfigTest.vshost.exe: D:\Profile\...\InternalConfigTest.vshost.exe.config 

माइक्रोसॉफ्ट कनेक्ट सुविधा मैं प्रस्तुत करने के लिए नहीं, धन्यवाद, यहाँ कोड है

संबंधित मुद्दे

 संबंधित मुद्दे