applicationSettings に関する記事やフォーラムの投稿をほぼ 1 週間読んでいます。
ほとんどすべてのスレッドで、デプロイ時にクラス ライブラリに構成ファイルを含めることはできず、設計時に構成されたそれらの applicationSettings を、ホスト/ dll を消費します。
必ずしもそうではありません。
アセンブリでハードコードされた DefaultValueAttribute を使用して指定された既定値を "上書き" する方法をユーザーに提供する場合を除き、これらのクラス ライブラリ設定をマージすることはできますが、マージする必要はありません。
したがって、非常に単純で実用的な例です。VB.NET を使ってみよう 1. ClassLibrary というクラス ライブラリ プロジェクトを作成しました。2. すべてのファイルを表示して、MyProject を展開し、Settings.settings をダブルクリックします。3. 値が「Hello!」であるアプリケーション スコープのメッセージという設定を追加します。4. Class1.vb にプロパティを作成します (自動的に追加されたクラス)
Public Class Class1
Public Shared ReadOnly Property Message As String
Get
Return My.Settings.Message
End Get
End Property
End Class
- VB WinForms プロジェクトを作成し、それを WinForm と呼びます。
- ClassLibrary プロジェクトへの参照を追加します。
作成済みの Form1 にボタンを追加し、それをダブルクリックします。8 Button1_Click ハンドラにいくつかのコードを追加します。このように見えるはずです。
パブリック クラス Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click MessageBox.Show(ClassLibrary.Class1.Message) End Sub
クラス終了
WinFormを「スタートアッププロジェクトとして設定」する
これで、IDE ではすべてが美しく機能します。ソリューションを実行すると、予想される Hello! が表示されます。ボタンを押すと。ライブラリの app.config の設定を変更して、「さようなら!」と言うと、ソリューションを再度実行すると、「さようなら!」というメッセージが表示されます。
ただし、WinForm プロジェクトを右クリックして [エクスプローラーで開く] をクリックし、Debug フォルダーに移動します。WinForm.exe.config ファイルはまだありません。早速作成してみましょう。VS に戻り、WinForm プロジェクトが選択されている間に [すべてのファイルを表示] をクリックします。MyProject を展開し、Settings.settings を開き、設定を作成して (何でも構いません)、保存します。これで、App.config が作成されました。このソリューションをビルドすると、Debug フォルダーに WinForm.exe.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の構成に
<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>
そのため、WinForm.exe.config の Message 設定の値を別の値に変更すると、アプリケーションは DefaultValueAttribute をオーバーライドしてこの新しい値を表示します。