今天使用VS2005开发一个Windows服务,发现dotnet2.0的配置系统相对于1.x的功能变化很大。记录下来同各位共享。
.NET Framework 1.1 提供一个基本的应用程序配置机制,以允许您定义应用程序配置文件中的只读应用程序设置。您可以通过System.Configuration.AppSettings类来访问这些设置,该类通过键来检索设置,并且返回一个必须转换为合适类型的弱类型对象。此机制对于简单情况而言是非常有用的,这些简单情况专注于一般只能由管理员修改的相对静态的数据。但是,许多其它应用程序配置的情况要求有一个更强大、更灵活的解决方案。.NET Framework 2.0 和 Visual Studio 2005 为 Windows 窗体应用程序提供了一个新的配置系统。该系统解决了先前解决方案的限制,并且引入了许多新概念,使您感受到更完整、更有效的设计时体验和更加个性化的最终用户体验。
配置设置该配置系统对配置设置的定义、读取以及写入提供了更强大的支持。每个设置均按其名称、数据类型、作用域、默认值以及可访问性进行定义。所有的设置都是强类型的,并且您可以指定任何可序列化的类型。该配置系统支持许多持久化设置值的机制,包括字符串表示、XML 序列化以及二进制序列化。还可以将设置定义为如下两个作用域之一:用户或应用程序。应用程序设置是只读的,并且其值由计算机上此应用程序的所有用户共享。默认情况下,这些值存储在应用程序配置文件中。下面是一些配置设置的示例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="BigTeam.WindowsService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<BigTeam.WindowsService.Properties.Settings>
<setting name="BigTeam_WindowsService_JoinJobService_SecurityService"
serializeAs="String">
<value>[url]http://localhost/BigTeam.Security/SecurityService.asmx</value>[/url]
</setting>
<setting name="IntervalMinutes" serializeAs="String">
<value>5</value>
</setting>
</BigTeam.WindowsService.Properties.Settings>
</applicationSettings>
</configuration>
包装类配置系统需要您使用包装类来访问存储于配置存储中的设置。这些包装类向配置系统提供了强类型的接口,并且提供了完整描述每个设置的元数据。这就允许包装类的用户无需直接访问配置文件就可以理解每个设置的配置方式。
注您应该了解,配置系统是通过一个可插入的体系结构来连接设置存储的。最初,系统只支持配置文件中的存储设置,但是最后会支持许多潜在的设置存储。
下面是先前显示的设置的包装类:
namespace BigTeam.WindowsService.Properties {   
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {       
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
[global::System.Configuration.DefaultSettingValueAttribute("[url]http://localhost/BigTeam.Security/SecurityService.asmx[/url]")]
public string BigTeam_WindowsService_JoinJobService_SecurityService {
get {
return ((string)(this["BigTeam_WindowsService_JoinJobService_SecurityService"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("5")]
public string IntervalMinutes {
get {
return ((string)(this["IntervalMinutes"]));
}
}
}
}
在应用程序代码中使用包装类来访问和修改配置设置。例如,下面的代码用于检索存储在名为 BigTeam_WindowsService_JoinJobService_SecurityService用户设置中的 WebService的URL。BigTeam.WindowsService.Properties.Settings setting = new BigTeam.WindowsService.Properties.Settings();
string urlSettings = setting.BigTeam_WindowsService_JoinJobService_SecurityService; //这里可以从配置文件中获取
IDE支持虽然可以手动创建配置文件和包装类,但是 Visual Studio 2005 对这两个任务都提供完全的 IDE 支持。在 Visual C# .NET 中,可以通过右键单击解决方案资源管理器中的项目并选择“Properties”来访问设置设计器。在属性页列表中,选择“Settings”。将看到一个设计器,它允许您定义应用程序和用户设置的所有方面。在设计器中保存更改时,Visual C# 会自动创建并填充相应的配置文件。它还将创建一个包装类,并通过 Settings 使该包装类可作为 Settings进行访问。
自由、创新、研究、探索……

转载于:https://blog.51cto.com/shanyou/75200

Dotnet 2.0配置系统相关推荐

  1. 揭开.NET 2.0配置之谜(一)

    2010-03-20 15:33 by 吴秦, 4828 阅读, 20 评论, 收藏, 编辑 此文是译文,原文是Jon Rista,Unraveling the Mysteries of .NET 2 ...

  2. SRS视频服务器-docker部署srs4.0.198-ubuntu系统:配置低时延实现srt推流和拉流

    一.docker安装srs4.0.198 推荐使用docker来安装srs视频服务器,简单方便 我使用的是ubuntu18.04系统. 1.1.docker的安装 我参考的是:https://blog ...

  3. J2EE 中的服务器 tomcat6.0 配置

    Tomcat6.0 配置 第一步:下载jdk和tomcat:JDK下载  Tomcat下载     最新的jdk为1.6.10,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上 第二 ...

  4. 破解.NET 2.0配置之谜(一)

    引言 NET的美妙特点之一是它的XML配置功能.在.NET 1.x时代,常见的应用程设置.数据库连接字符串.ASP.NET Web服务器配置和基本的自定义配置数据可以存储在.config文件中.自定义 ...

  5. android 关闭jack_Android7.0 配置JACK支持多用户同时编译

    # Android7.0 配置JACK支持多用户同时编译 reference: 背景 需要在一个Android7平台上进行有关的工作,但是编译的时候发现有问题.记录一下.因为和同事共用一台服务器,因为 ...

  6. WINCE5.0+S3C2443系统每隔几分钟会自动关闭LCD显示

    这几天在调试WINCE5.0+S3C2443系统的时候,发现大概每隔6分钟的时候,系统就会自动关闭LCD屏的显示,这时候如果去点击触摸屏就会恢复显示.刚开始我还以为是系统进入了sleep状态了,发现在 ...

  7. Dotnet 6.0 深度探索(一)

    Dotnet 6.0 已来. Dotnet 6.0 大家都装了没? 我打算开个专题,系统地写一写 Dotnet 6.0 在各个方面的特性,以及全新的开发方式.也是因为最近讨论 6.0 比较多,看到很多 ...

  8. Dotnet 6.0,你值得拥有

    Dotnet 6.0 就要来了,这会是一个绝对值得拥有的版本.了解一下?   最近在研究 Dotnet 6.0 & C# 10,一个字 - 爽! 下面,分享一下新的一些特性给大家. 一.编程语 ...

  9. dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

    在前面几篇博客告诉大家如何部署 GTK 应用,此时的应用是特别弱的,大概只是到拖控件级.尽管和 WinForms 一样也能写出特别强大的应用,但是为了提升一点开发效率,咱开始使用 xaml 神器写界面 ...

最新文章

  1. 3451: Tyvj1953 Normal 点分治 FFT
  2. Python练习题:---给定一个字符串 {xxx[xxx{xxx}]xx{x[xxx]xxx{xxx}xx}x} 判断其中的 {}[]() 是否成对出现
  3. C#操作Access数据库 增删改查
  4. ASP.NET Core 对Controller进行单元测试
  5. 流程制造项目中关于销售订单数量与实际产生数量不同时的解决方案
  6. 同一个页面同时get post_get与post的区别
  7. Scrapy 1.6 中文文档校对活动 | ApacheCN
  8. Reapp - 下一代的 Hybrid App 开发框架
  9. java Servlet Filter 拦截Ajax请求
  10. 【安装配置】SAS9.4安装
  11. p2p网络中的NAT穿透
  12. 【CV】细粒度图像分割 (FGIS)
  13. 华电研究生学习和工作总结(2021.11.08-2021.11.12)-围城
  14. C++学习:后面有“::”的名称一定是类名或命名空间名
  15. 【2.25】认识Redis
  16. 手把手第一篇:写出第一行 Hello World
  17. 博客图片上传:Typora+PicGo图床
  18. Websphere远程代码执行-CVE-2015-7450
  19. [转]AJAX基础教程
  20. swift 点击图片预览,有放大缩小动画

热门文章

  1. event.keycode值大全
  2. oracle:平均分大于78的女同学的学号、姓名、平均分
  3. 数码显示实验报告C语言,数码问题C语言A星算法详细实验报告含代码(9页)-原创力文档...
  4. ext js ajax表单校验,Extjs之grid单元格编辑校验(示例代码)
  5. 分布式事务常见解决方案-关于状态机
  6. 数组动态初始化【应用】
  7. 分页和条件查询接口开发
  8. 反射_Class对象功能_获取Constructor
  9. 数据库-优化-groupby的优化
  10. 数据库-优化-检查慢日志是否开启