在开发.NET Windows窗体应用程序时,我们可以在这App.config个标记之间进行 Select ,以存储我们的配置值.哪一个更好?

<configuration>

  <!-- Choice 1 -->
  <appSettings>
    <add key="RequestTimeoutInMilliseconds" value="10000"/>
  </appSettings>

  <!-- Choice 2 -->
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" >
        <section name="Project1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <Project1.Properties.Settings>
      <setting name="TABLEA" serializeAs="String">
        <value>TABLEA</value>
      </setting>
    </Project1.Properties.Settings>
  </applicationSettings>

</configuration>

推荐答案

基本的<appSettings>更容易处理-只需输入<add key="...." value="..." />条目,您就完成了.

缺点是:没有类型判断,例如,您不能安全地假设您想要配置的数字确实是一个数字-有人可以在该设置中输入一个字符串……您只需将其作为ConfigurationManager["(key)"]访问,然后就由您自己来了解您正在处理的内容.

此外,随着时间的推移,如果应用程序的很多部分开始在<appSettings>中放置内容(还记得旧的windows.ini文件吗?:-),<appSettings>可能会变得相当复杂和混乱.

如果可以,我更喜欢并推荐使用您自己的配置节-使用.NET 2.0,它真的变得非常容易,这样,您就可以:

  • a)在代码中定义配置设置,并使其类型安全 并判断了
  • b) 你可以从每个人身上清晰地分离出YOUR个设置

这里有一系列关于你的好文章,可以解开这个谜团.CodeProject上的NET 2.0配置系统:

  1. Unraveling the mysteries of .NET 2.0 configuration

  2. Decoding the mysteries of .NET 2.0 configuration

  3. 一百

强烈推荐!Jon Rista在解释中很好地解释了配置系统.NET 2.0.

.net相关问答推荐

如何使用.NET8MapIdentityApi设置OpenApi操作ID

通过交互服务器渲染模式和流渲染的组合防止双重渲染

Msbuild try 构建 msbuild.exe 而不是我的 .csproj 文件

为什么不能使用 null 作为 Dictionary 的键?

.Include() 与 .Load() 在 EntityFramework 中的性能

C# 时间跨度毫秒与 TotalMilliseconds

ILMerge 最佳实践

生产代码中的 System.Diagnostics.Debug.WriteLine

.NET 4.0 中有内置的二叉搜索树吗?

哪个单元测试框架?

C#:内存不足异常

在 JavaScript 中使用 String.Format?

我可以在没有两个查询的情况下通过布尔标准将 IEnumerable 一分为二吗?

关闭 Visual Studio 中所有选项卡但当前选项卡的键盘快捷键?

X509Certificate 构造函数异常

获取 .NET 程序集的 AssemblyInformationalVersion 值?

mscorlib 代表什么?

在 C# 中,为什么不能将 List 对象存储在 List 变量中

在 IIS 中访问 .svc 文件时出现 HTTP 404

LINQ 可以与 IEnumerable 一起使用吗?