Mir*_*Ion 6 application-settings settings.settings visual-studio
我正在阅读有关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" serializeAs="String">
<value>Hello!</value>
</setting>
</ClassLibrary.My.MySettings>
</applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
进入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>
Run Code Online (Sandbox Code Playgroud)
所以我可以将WinForm.exe.config中的Message设置值更改为其他内容,应用程序将显示覆盖DefaultValueAttribute的新值.
我最近针对这个应用程序设置问题做了一些研究。我找到了两种相对方便的方法来完成我的要求。我把我的想法放在一起并在这里写了一篇博客文章。
对于部署,您必须在主配置文件中创建一个配置部分并指向

您修改后的“ClassLibrary.dll.config”:

不过,您不必指向外部文件,配置节声明可以在主配置文件中进一步指向它们的定义,如下所示。

| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |