2011-06-25 18 views
7

मान लें कि हमारे पास असेंबली 1 और असेंबली 2 है।संदर्भित असेंबली में कॉन्फ़िगरेशन दोहराएं

असेंबली 2 विधानसभा 1 द्वारा उपयोग की जाने वाली सी # कक्षा पुस्तकालय है।

वेब और सेवा संदर्भ कॉन्फ़िगर किए गए हैं और Asembly2/app.Config में संग्रहीत हैं।

इसके अलावा, ईएफ कनेक्शन स्ट्रिंग असेंबली 2/एप में हैं। कॉनफिग।

जब मैं विधानसभा 1 में विधानसभा 2 का उपयोग करता हूं, तो Assembly 2 कॉन्फ़िगरेशन फ़ाइल का उपयोग नहीं किया जाता है। असल में, उस परिदृश्य में, केवल असेंबली 1 कॉन्फ़िगरेशन डिफ़ॉल्ट माध्यमों के माध्यम से सुलभ दिखाई देता है।

नतीजतन, मुझे Assembly 1 कॉन्फ़िगरेशन सामग्री को विधानसभा 1 कॉन्फ़िगरेशन में कॉपी करना होगा।

इसने कई परियोजनाओं के लिए मेरे लिए काम किया है।

क्या कोई और तरीका है? एक बेहतर तरीका?

कॉन्फ़िगरेशन डेटा दोहराना गलत लगता है।

क्या आपके पास कोई सिफारिश या तकनीक है जो काम करती है?

धन्यवाद।

उत्तर

4

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

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

यदि आप पहले से ही इस तकनीक का उपयोग कर रहे हैं, तो यह सही तरीका है। यह तकनीक लचीला है। उदाहरण के लिए यदि आपके पास एक बॉक्स पर एक ही कनेक्शन स्ट्रिंग वाले एक से अधिक प्रोजेक्ट हैं, तो आप machine.config फ़ाइल में कनेक्शन स्ट्रिंग निर्दिष्ट कर सकते हैं। यदि आवश्यक हो तो आप कुछ परियोजनाओं में सेटिंग्स को ओवरराइड भी कर सकते हैं।

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <sectionGroup name="applicationSettings" 
        type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 

     <!--This section declaratrion pasted here from dll conifg file --> 
     <section name="ClassLibrary1.Properties.Settings" 
       type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
       requirePermission="false" /> 

     <!--This section declaratrion was here in the first place --> 
     <section name="MainAssembly.Properties.Settings" 
       type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
       requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 
    <connectionStrings> 

    <!--This connection string was here in the first place --> 
    <add name="MainAssembly.Properties.Settings.MainAssemblyConnectionString" 
     connectionString="MainConnectionStringValue" /> 

    <!--This connection string pasted here from dll config file --> 
    <add name="ClassLibrary1.Properties.Settings.LibraryConnectionString" 
     connectionString="LibraryConnectionStringValue" 
     providerName="" /> 
    </connectionStrings> 
    <applicationSettings> 

    <!--This settings section pasted here from dll config file --> 
    <ClassLibrary1.Properties.Settings> 
     <setting name="LibrarySetting" 
       serializeAs="String"> 
     <value>LibrarySettingValue</value> 
     </setting> 
    </ClassLibrary1.Properties.Settings> 

    <!--This strings section was here in the first place --> 
    <MainAssembly.Properties.Settings> 
     <setting name="MainAssemblySetting" 
       serializeAs="String"> 
     <value>MainSettingValue</value> 
     </setting> 
    </MainAssembly.Properties.Settings> 
    </applicationSettings> 
</configuration> 
2

एक डीएलएल (या एक अन्य संदर्भित असेंबली) इसका अपना ऐप.कॉन्फिग ले जाने के लिए नहीं है, बल्कि कॉलर द्वारा कॉन्फ़िगर किया गया सब कुछ है। तो सब कुछ exe के app.config में जाना चाहिए।

उदाहरण के लिए एक साझा डेटा एक्सेस लाइब्रेरी पर विचार करें जिसके लिए डेटाबेस में कनेक्शन स्ट्रिंग की आवश्यकता है। लाइब्रेरी विभिन्न कनेक्शन आवश्यकताओं के साथ विभिन्न अनुप्रयोगों से उपयोग करना संभव होना चाहिए। साझा लाइब्रेरी में कड़ाई से बंधे कनेक्शन स्ट्रिंग को काम नहीं करेगा, यह लाइब्रेरी का उपयोग कर क्लाइंट पर किया जाना है।

यह प्रणाली में सेटिंग्स है कि सभी एप्लिकेशन machine.config फ़ाइल में एक मशीन पर चल प्रभावित कर रखा है, लेकिन सावधानी के साथ कि दृष्टिकोण का उपयोग के रूप में यह मशीन पर सभी अनुप्रयोगों को प्रभावित करेगा के लिए संभव है।

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