2008-09-30 12 views
8

मुझे अपेक्षाकृत बड़ा नेट सिस्टम मिला है जिसमें कई अलग-अलग अनुप्रयोग शामिल हैं। कई अलग-अलग app.config फ़ाइलों को रखने के बजाय, मैं सभी ऐप्स के बीच एक एकल कॉन्फ़िगरेशन फ़ाइल साझा करना चाहता हूं।मैं .net एप्लिकेशन में एप्लिकेशन कॉन्फ़िगरेशन कैसे साझा कर सकता हूं?

मैं अपनी मशीन पर विकास करते समय एक संस्करण भी लेना चाहता हूं, किसी अन्य के लिए एक संस्करण, जो उनकी मशीन पर विकसित हो रहा है, एक परीक्षण प्रणाली के लिए एक संस्करण और लाइव सिस्टम के लिए एक संस्करण है।

क्या ऐसा करने का कोई आसान तरीका है?

+0

मेरे पास एक ही प्रश्न था लेकिन वास्तव में समाधान खोजने में कभी नहीं मिला। मैं इस धागे का पालन करूंगा। –

उत्तर

6

एकाधिक अनुप्रयोगों द्वारा आवश्यक कॉन्फ़िगरेशन की बड़ी मात्रा के लिए, मैं इस कॉन्फ़िगरेशन को केंद्रीय भंडार में रखूंगा, उदा। एक डेटाबेस, एक सामान्य स्थान में फ़ाइल।

विभिन्न वातावरण के लिए एक विन्यास फाइल के विभिन्न संस्करणों का उपयोग करने के लिए, विभिन्न वातावरण से प्रत्येक के लिए एक निर्माण विन्यास और एक config पर्यावरण के नाम पर फ़ाइल, जैसे बनाने के लिए:

उत्पादन production.app.config परीक्षण परीक्षण .app.config

फिर आप अपने प्रोजेक्ट में डिफ़ॉल्ट app.config पर सही कॉन्फ़िगरेशन की प्रतिलिपि बनाने के लिए प्री बिल्ड इवेंट का उपयोग कर सकते हैं। इसके बाद यह आपकी आउटपुट निर्देशिका में सामान्य के रूप में कॉपी हो जाएगा।

प्री बिल्ड इवेंट उपर्युक्त जैसा दिखता है, बस अपने इच्छित वातावरण के लिए उचित फ़ाइल प्राप्त करने के लिए $ (कॉन्फ़िगरेशन) का उपयोग करें।

आप उपरोक्त के साथ इसे प्रत्येक परियोजना में समग्र बिल्ड विशिष्ट कॉन्फ़िगरेशन फ़ाइलों की प्रतिलिपि बनाने के लिए जोड़ सकते हैं।

+2

एक केंद्रीय भंडार को अभी भी कुछ स्थानीय कॉन्फ़िगरेशन जानकारी की आवश्यकता है (उदा। कनेक्शन स्ट्रिंग या जो भी इसे एक्सेस करने के लिए आवश्यक है)। साथ ही, कुछ जानकारी को स्थानीय और भंडार के बीच विभाजित करने की आवश्यकता है (उदा। लॉगिंग "प्रारंभिक" त्रुटियों की रिपोर्ट करने में सक्षम होने के लिए)। अभी भी निश्चित रूप से करने योग्य, लेकिन कुछ अतिरिक्त विचारों की आवश्यकता है। –

+0

मुझे लगता है कि दृश्य स्टूडियो में बिल्ड कॉन्फ़िगरेशन करने की आवश्यकता होगी - मुझे यह ठीक लगता है, लेकिन काफी प्रबंधन की आवश्यकता है क्योंकि बिल्डिंग कॉन्फ़िगरेशन को गलती से बदलना बहुत आसान है। अच्छा जवाब हालांकि! –

+0

निक आर - मैंने इसे केवल विजुअल स्टूडियो के भीतर ही किया है, लेकिन यह नहीं देखते कि एमएसबिल्ड भी ऐसा क्यों नहीं कर सका। – marcj

2

आप एक के बाद निर्माण घटना इस्तेमाल कर सकते हैं - अपने "बच्चा" परियोजनाओं पर (गुण> बिल्ड घटनाक्रम) एक कॉन्फ़िग फ़ाइल इस तरह, दूसरों के लिए एक मास्टर परियोजना से कॉपी करने के लिए:

copy /Y c:\path\to\master\project\app.config $(TargetPath).config 
exit 0 

(" बाहर निकलें 0 "क्योंकि अंतिम पंक्ति निर्माण त्रुटि को रोकती है)।

विभिन्न बिल्ड लक्ष्यों ("रिलीज", "DEBUG", आदि) के लिए अलग कॉन्फ़िगरेशन फ़ाइलें रखने के लिए, आप प्रत्येक के लिए एक AppConfig टैग जोड़ने के लिए .csproj फ़ाइल (या .vbproj) में .csproj फ़ाइल (या .vbproj) संपादित कर सकते हैं। लक्षित समूहों, इस तरह:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>.\bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <AppConfig>debug.app.config</AppConfig> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>.\bin\Devel\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <AppConfig>release.app.config</AppConfig> 
    </PropertyGroup> 

सूचना नई < AppConfig> टैग प्रत्येक समूह में मौजूद।

2

इसके बजाय अपने कॉन्फ़िग फ़ाइल के अपने <appSettings> अनुभाग के लिए <add> तत्वों को जोड़ने के लिए, आप एक file= विशेषता <appSettings> तत्व के लिए एक अलग फ़ाइल से कि डेटा लोड करने के लिए यह बताने के लिए जोड़ सकते हैं। फिर आप अपनी सामान्य सेटिंग्स को उस सामान्य फ़ाइल में रख सकते हैं।

एमएसडीएन लाइब्रेरी में appSettings Element (General Settings Schema) देखें।

+0

मैं ऐसा करता हूं। मैं बस निराश हूं कि सेटिंग्स.सेटिंग फ़ाइल (मैं इसे पसंद करता हूं क्योंकि यह सेटिंग्स को मजबूत प्रकार देता है और कॉन्फ़िगरेशन के आसान उन्नयन की अनुमति देता है) इस सुविधा की पेशकश नहीं करता है। –

0

आप कॉन्फ़िगरेशन सेटिंग्स को मशीन.कॉन्फिग में कई अनुप्रयोगों के बीच साझा करने के लिए भी डाल सकते हैं। यह तैनाती को और अधिक समस्याग्रस्त बनाता है हालांकि।

1

.NET .config फ़ाइल साझा करने के लिए NTFS symbolic links का उपयोग करना संभव है। मैंने देखा है कि यह एक एएसपी.NET आवेदक, कंसोल अनुप्रयोगों, आदि के समाधान में सफलतापूर्वक उपयोग किया जाता है।

+0

मुझे यह पसंद है, लेकिन यह एक और तैनाती कदम जोड़ता है। – ProfK

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

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