2012-04-12 16 views
6

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

लगभग हर धागा कोई सही ढंग से करने के लिए कहा कि वर्ग पुस्तकालयों config फ़ाइलों जब तैनात और उनके applicationSettings डिजाइन पर कॉन्फ़िगर निर्दिष्ट किया जाना चाहिए नहीं हो सकता है प्रतीत होता है कि वहाँ था में/निष्पादन .exe.config विन्यास फाइल में विलय कर दिया डीएल की मेजबानी/उपभोग करने वाले एप्लिकेशन का।

आवश्यक नहीं है।

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

तो, एक बहुत ही सरल, व्यावहारिक उदाहरण के लिए। आइए VB.NET का उपयोग करें 1. मैंने क्लास लाइब्रेरी प्रोजेक्ट बनाया है जिसे क्लास लाइब्रेरी कहा जाता है। 2. सभी फाइलें दिखा रहा है, MyProject का विस्तार करें, सेटिंग्स. सेटिंग्स पर डबल क्लिक करें। 3. संदेश नामक एक सेटिंग जोड़ना, एप्लिकेशन स्कॉप्ड जिसका मूल्य "हैलो!" है। 4. Class1.vb में एक संपत्ति (स्वचालित रूप से जोड़ वर्ग)

Public Class Class1 

    Public Shared ReadOnly Property Message As String 
     Get 
      Return My.Settings.Message 
     End Get 
    End Property 

End Class 
  1. एक वीबी WinForms परियोजना बनाएँ और यह WinForm फोन बनाएँ।
  2. क्लास लाइब्रेरी प्रोजेक्ट में एक संदर्भ जोड़ें।
  3. पहले से बनाए गए फॉर्म 1 में एक बटन जोड़ें और उस पर डबल क्लिक करें। 8 बटन 1_Click हैंडलर में कुछ कोड जोड़ें। ऐसा दिखना चाहिए।

    लोक क्लास Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
        MessageBox.Show(ClassLibrary.Class1.Message) 
    End Sub 
    

    समाप्ति कक्षा

  4. Have WinForm देर में आईडीई सब कुछ खूबसूरती से काम करता है

अब, "स्टार्टअप परियोजना के रूप में सेट"। समाधान चलाएं और आपको अपेक्षित हैलो मिल जाएगा! जब आप बटन दबाते हैं। यदि आप पुस्तकालय के app.config में सेटिंग को "अलविदा" कहने के लिए जाते हैं और सेटिंग बदलते हैं। और आप फिर से समाधान चलाते हैं आपको "अलविदा" मिलता है!

हालांकि, WinForm प्रोजेक्ट पर राइट क्लिक करें और "एक्सप्लोरर में खोलें" और डीबग फ़ोल्डर पर जाएं। अभी तक कोई WinForm.exe.config फ़ाइल नहीं है। आइए जल्दी से एक बनाएं। वीएस पर वापस स्विच करें और WinForm प्रोजेक्ट का चयन होने पर सभी फ़ाइलें दिखाने के लिए क्लिक करें। MyProject का विस्तार करें, सेटिंग्स खोलें। सेटिंग्स, एक सेटिंग बनाएं (क्या कोई फर्क नहीं पड़ता) और सहेजें। वहां हम जाते हैं, एक App.config बनाया गया था और यदि मैं इस समाधान का निर्माण करता हूं, तो डीबग फ़ोल्डर में WinForm.exe.config होगा।

मुझे बताओ कि कैसे मैं WinForm के config

<configuration> 
    <configSections> 
     <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
      <section name="WinForm.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     </sectionGroup> 
    </configSections> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" /> 
    </startup> 
    <applicationSettings> 
     <WinForm.My.MySettings> 
      <!--<setting name="A" serializeAs="String"> 
       <value>A</value> 
      </setting>--> 
     </WinForm.My.MySettings> 
    </applicationSettings> 
</configuration> 

में मेरी संदेश वर्ग पुस्तकालय config

<configuration> 
    <configSections> 
     <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
      <section name="ClassLibrary.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     </sectionGroup> 
    </configSections> 

    <applicationSettings> 
     <ClassLibrary.My.MySettings> 
      <setting name="Message" serializeAs="String"> 
       <value>Hello!</value> 
      </setting> 
     </ClassLibrary.My.MySettings> 
    </applicationSettings> 
</configuration> 

से स्थापित करने के विलय तो मैं के WinForm में मान सेट संदेश बदल सकते हैं।exe.config कुछ और करने के लिए और एप्लिकेशन DefaultValueAttribute को ओवरराइड करने वाला यह नया मान प्रदर्शित करेगा।

उत्तर

3

मैंने हाल ही में इस एप्लिकेशन के लिए कुछ शोध किया है सेटिंग्स समस्या। मुझे जो कुछ भी मांग रहा था, उसके दो अपेक्षाकृत सुविधाजनक तरीके मिले। मैंने इसके बारे में अपने विचारों को एक साथ रखा और ब्लॉग प्रविष्टि here लिखा।

+0

लिंक किए गए ब्लॉग पोस्ट में दो विधियां हैं, जिनमें से दूसरा मेरे लिए काम करता है। यदि लिंक कभी मर जाता है, तो प्रासंगिक जानकारी खोजने के लिए बस "एप्लिकेशन सेटिंग्स कॉन्फ़िगरेशन" की खोज करें। – HotN