2010-07-23 18 views
5

मैं विभिन्न कॉन्फ़िगरेशन फ़ाइल के साथ एक प्रोग्राम चलाने के लिए चाहता हूं, प्रोग्राम सी # 2.0 के साथ लिखता है, मैं कुछ अलग फ़ाइल नाम {program_name} .exe.config बना देता हूं, मेरा मतलब है कि विभिन्न कॉन्फ़िगरेशन फ़ाइल के साथ एक exe, उदाहरण के लिए मेरे पास 3 कॉन्फ़िगरेशन फ़ाइल है , तो मैं अलग-अलग कॉन्फ़िगरेशन फ़ाइल के साथ 3 exe चलाऊंगा, exe फ़ाइल एक ही है। क्या मैं ऐसा करने के लिए अलग कॉन्फ़िगरेशन फ़ाइल (मैं exe कमांड पैरामीटर में कॉन्फ़िगरेशन फ़ाइल पथ डालना नहीं चाहता) पढ़ने के लिए प्रोग्राम को संशोधित नहीं कर सकता (जैसे बैच फ़ाइल या अन्य विधि का उपयोग करें।)?विभिन्न कॉन्फ़िगरेशन फ़ाइल के साथ निष्पादन योग्य प्रोग्राम कैसे चलाएं?

धन्यवाद।

+0

तुम्हारा मतलब है तुम एक निष्पादन और तीन config फ़ाइलें पैरामीटर गुजर, और आप जो आप उपयोग का चयन करना चाहते? –

उत्तर

1

आपके पास तीन कॉन्फ़िगरेशन और एक निष्पादन योग्य के साथ मुख्य समस्या यह है कि आपको निष्पादन योग्य को निर्दिष्ट करने की आवश्यकता है जो उपयोग करने के लिए कॉन्फ़िगर किया गया है। exe1.exe.config, exe2.exe.config और exe3.exe.config -

एक विकल्प अपने निष्पादन के 3 प्रतियां, exe1.exe, exe2.exe और exe3.exe बनाने के लिए और प्रत्येक के लिए एक समान नाम config है।

प्रत्येक निष्पादन योग्य चलते समय, यह सही कॉन्फ़िगरेशन का उपयोग करेगा।

एक और विकल्प कई बैच फ़ाइलों को रखना है जो विभिन्न कॉन्फ़िगरेशन फ़ाइलों का नाम बदलेंगे, जिसके अनुसार आप उपयोग करना चाहते हैं। फिर आपके पास एक एक्सई और तीन कॉन्फ़िगरेशन हैं।

+0

मेरे पास एक समान स्थिति है और मैंने एक्सई की प्रतियां अलग फ़ोल्डरों में बनाकर किया। तो मेरे पास फ़ोल्डर 1, फ़ोल्डर 2, फ़ोल्डर 3 था जो एक ही निष्पादन योग्य था। फिर एक विंडोज़ बैच फ़ाइल का उपयोग करते हुए, मैं स्टार्ट फ़ोल्डर 1 का उपयोग करके एक ही बार में सभी तीन लांच करने के लिए \ myexe.exe शुरू में सक्षम था folder2 \ myexe.exe शुरू folder3 \ myexe.exe – abhi

0

आप एक दूसरा निष्पादन योग्य बनाते हैं, और हमेशा इसे पहले चलाते हैं। इसमें, आप जो भी करते हैं, वह सही नाम पर एक कॉन्फ़िगराइल का नाम बदलता है और मुख्य एप्लिकेशन को आग लगा देता है।

string currentConfig = "application.exe.config"; 
string someOtherName = "firstconfig.config"; 
string configFileYouWant = "secondconfig.config"; 
string application = "application.exe"; 

File.Move(currentConfig, someOtherName); 
File.Move(configFileYouWant, currentConfig); 
Process.Start(application); 
7

आप उस एप्लिकेशन डोमेन के लिए कॉन्फ़िगरेशन फ़ाइल बदल सकते हैं जिसमें exe लोड किया गया है। यह AppDomain क्लास की SetData विधि का उपयोग करके किया जाता है। सुनिश्चित करें कि कोड की इस पंक्ति को आपके आवेदन की पहली पंक्ति के रूप में निष्पादित किया गया है।

मैंने 3 exe.config फ़ाइल को 3 अलग-अलग एक्जिक्यूटिव के बीच साझा करने के लिए निम्नलिखित कोड का उपयोग किया है।

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE","yourSharedConfig.exe.config"); 

आप निम्न ब्लॉग प्रविष्टि
Binding to custom app.config

देख सकते हैं आप 3 अलग कॉन्फ़िगरेशन के साथ एक ही exe चलाना चाहते हैं, मेरा मानना ​​है कि एक ही दृष्टिकोण अनुकूलन के बिट के साथ काम करेंगे। आप कमांड लाइन पैरामीटर के रूप में exe को आमंत्रित करते समय कॉन्फ़िगरेशन फ़ाइल का नाम पास कर सकते हैं और SetData विधि का उपयोग करके आप गतिशील रूप से कॉन्फ़िगरेशन सेट कर सकते हैं।

+0

धन्यवाद नीलेश, यह मेरे लिए ठीक काम करता है! –

+0

'AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = "yourSharedConfig.exe.config" का उपयोग करना बेहतर नहीं होगा? – Keith

1

मैं LINQ के साथ इसे बनाने के लिए और के रूप में config = path2file

public partial class App : Application { 

    private void startup(object sender, StartupEventArgs e) { 
     if (null != e) { 
      if (null != e.Args && 0 < e.Args.Length) { 
       string config = e.Args.Where(a => a.StartsWith("config=")).FirstOrDefault(); 
       if (null != config) { 
        config = config.Substring("config=".Length); 
        if (File.Exists(config)) { 
         AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", config); 
        } 
       } 
      } 
     } 
    } 
संबंधित मुद्दे