我正在阅读有关applicationSettings的文章和论坛帖子,差不多一个星期了.
在几乎每个线程中都有人似乎正确地指出类库在部署时不能有配置文件,并且必须在主机/的应用程序的可执行文件 .exe.config配置文件中指定/合并其设计中的applicationSettings.消耗dll.
不一定是真的.
您可以但不需要合并它们类库设置,除非您希望为用户提供"覆盖"默认值的方法 - 使用在程序集中硬编码的DefaultValueAttribute指定的默认值.
所以,对于一个非常简单,实用的例子.让我们使用VB.NET 1.我创建了一个名为ClassLibrary的类库项目.2.显示所有文件,展开MyProject,双击Settings.settings.3.添加名为Message的设置,应用程序作用域,其值为"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
Run Code Online (Sandbox Code Playgroud)
在已创建的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
Run Code Online (Sandbox Code Playgroud)
结束班
让WinForm"设置为启动项目"
现在,在IDE中,一切都很美妙.运行解决方案,您将获得预期的Hello!当你按下按钮.如果你去更改库的app.config中的设置,说"再见!" 然后你再次运行解决方案,你会得到一个"再见!"
但是,右键单击WinForm项目并"在资源管理器中打开"并转到Debug文件夹.还没有WinForm.exe.config文件.让我们快速创建一个.切换回VS并在选择WinForm项目时单击以显示所有文件.展开MyProject,打开Settings.settings,创建一个设置(doens't what what)并保存.我们去了,创建了一个App.config,如果我构建了这个解决方案,Debug文件夹将包含一个WinForm.exe.config.
告诉我如何从类库配置中合并我的Message设置
<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" …Run Code Online (Sandbox Code Playgroud)