2012-04-12 16 views
6

私は今記事を読んでおり、applicationSettingsのフォーラム記事はほぼ一週間読んでいます。クラスライブラリのapplicationSettingsをホスト実行可能ファイルの設定ファイルにマージする方法

は、ほぼすべてのスレッドでは正しく展開され、そのapplicationSettingsは、設計時に設定したときのクラスライブラリは、設定ファイルを持つことができないことを指摘したように見える誰かが実行 .exe.config構成ファイルで/マージ指定する必要がありますがありましたdllをホスト/消費するアプリケーションの

必ずしもそうである必要はありません。

デフォルト値(アセンブリでハードコーディングされたDefaultValueAttributeを使用して指定された値)を "上書き"する方法をユーザーに提供しない限り、クラスライブラリの設定をマージする必要はありません。

とても簡単で実用的な例です。 VB.NETを使用しましょう 1. ClassLibraryというクラスライブラリプロジェクトを作成しました。 2.すべてのファイルを表示し、MyProjectを展開して、Settings.settingsをダブルクリックします。 3. Messageという名前の設定を追加しました。値は "Hello!"です。 4. VBのWinFormsプロジェクトを作成し、Winフォームを呼び出しClass1.vbの(自動的に追加されたクラス)に

Public Class Class1 

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

End Class 
  1. をプロパティを作成します。
  2. ClassLibraryプロジェクトへの参照を追加します。
  3. 既に作成されたForm1にボタンを追加してダブルクリックします。 8 Button1_Clickハンドラにコードを追加します。このように見えるはずです。 IDEのすべてが美しく作品にしながら、今

、 "スタートアッププロジェクトとして設定"

パブリック・クラスのForm1

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

エンドクラス

  • てきたのWinForm。ソリューションを実行すると、期待どおりのHello!ボタンを押したときに表示されます。行って、ライブラリーのapp.configの設定を「さようなら!」と変更したらあなたはもう一度このソリューションを実行して、「さようなら」を得るでしょう。

    ただし、WinFormプロジェクトを右クリックして[エクスプローラで開く]を選択し、[デバッグ]フォルダに移動します。まだWinForm.exe.configファイルはありません。すぐに作成しましょう。 VSに戻り、WinFormプロジェクトが選択されている間、[すべてのファイルを表示]をクリックします。 MyProjectを開き、Settings.settingsを開き、設定を作成して(何も問題なく)保存します。 App.configが作成されました。このソリューションをビルドすると、DebugフォルダーにWinForm.exe.configが含まれます。

    は私が、私はWinフォームでの値を設定するメッセージを変更することができますの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> 
    

    にクラスライブラリの設定

    <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> 
    

    から設定私のメッセージをマージする方法を教えてください。exe.configを他のものに変更すると、アプリケーションはDefaultValueAttributeをオーバーライドしてこの新しい値を表示します。

  • 答えて

    3

    最近、このapplicationSettingsの問題についていくつかの調査を行っています。 私が求めていたことを実行するのに、比較的便利な方法が2つ見つかりました。 私はそれについての私の考えをまとめ、ブログエントリhereを書きました。

    +0

    リンクされたブログ投稿には2つの方法があり、そのうち2番目の方法は私のために働いた。リンクがなくなった場合は、関連する情報を見つけるために "applicationSettings configSource"を検索してください。 – HotN

    関連する問題