【问题标题】:How do I configure base class libraries in my app.config file?如何在我的 app.config 文件中配置基类库?
【发布时间】:2012-05-05 21:12:50
【问题描述】:

我发现了一些与 app.config/web.config 相关的 sn-ps 信息,这些信息暗示了 BCL 组件的几乎无代码配置,直接通过 app.config 进行。但是,鉴于 app.config 中的智能感知建议的标签数量,这表明存在大量可能性,我无法找到任何有用的信息。

是否有任何文档支持此特定配置文件区域?我可以找到大量关于存储/检索配置信息的信息和少量关于编写我熟悉的自定义配置部分的信息,但我找不到任何关于以这种方式配置 BCL 组件的信息。有没有人有这方面的参考资料?

我遇到的一个例子如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="2">
      <listeners>
        <add name="Console"
             type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
              traceOutputOptions="Timestamp" />
      </listeners>
    </trace>
    <switches>
      <add name="Logging.Program.Listener" value="Error" />
    </switches>
  </system.diagnostics>
</configuration>

可以使用与此类似的方式使用代码:

class Program
{
  private static TextWriterTraceListener tw = new TextWriterTraceListener();
  private static TraceSwitch ts = new TraceSwitch("Logging.Program.Listener", "Default Logging Level", "Off");

  static void Main(string[] args)
  {
    Trace.Listeners.Add(tw);

    try
    {
        throw (new EntryPointNotFoundException());
    }
    catch (EntryPointNotFoundException ex)
    {
        string TraceMessage = "Trace {0}: {1}";
        Trace.WriteLineIf(ts.TraceError, String.Format(TraceMessage, TraceLevel.Error, "Error Level Message"));
        Trace.WriteLineIf(ts.TraceWarning, String.Format(TraceMessage, TraceLevel.Warning, "Warning Level Message"));
        Trace.WriteLineIf(ts.TraceInfo, String.Format(TraceMessage, TraceLevel.Info, "Info Level Message"));
        Trace.WriteLineIf(ts.TraceVerbose, String.Format(TraceMessage, TraceLevel.Verbose, "Verbose Level Message"));
    }
  }
}

【问题讨论】:

    标签: c# web-config app-config


    【解决方案1】:

    一个有用的资源是机器级配置文件。实际文件是基本文件,但旁边有“.cmets”文件,它们提供了相当详细的示例来说明可以实现的目标。例如,看看

    C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config.cmets

    这将使您对可以实现的目标有所了解。在您看到集合元素的任何地方,例如 &lt;traceSwitches&gt;&lt;traceListeners&gt; 元素,其中包含的单个 &lt;add&gt; 元素可能会根据您添加的内容而有所不同(即这些 &lt;add&gt; 元素上的特定属性将取决于您添加到集合中的确切内容)。为此,您需要查阅特定领域的文档,但在 MSDN 中搜索 &lt;traceSwitches&gt; 元素应该是一个不错的起点。

    【讨论】:

    • 谢谢,它并没有给我我正在寻找的所有信息,但它确实给了我一个正确方向的巨大指针......
    【解决方案2】:

    它们都可以通过这种方式进行配置。这就是为什么你没有找到任何东西。

    好吧,也许不是全部,但肯定是大多数。想知道的话,使用Reflector查找System.configuration.ConfigurationSection等所有派生类。

    【讨论】:

    • 真的没有任何关于此的文档吗?我的意思是,您不能仅仅因为开发人员都这样做就假设开发人员会解决这个问题......
    猜你喜欢
    • 1970-01-01
    • 2018-02-06
    • 2014-08-06
    • 2020-02-23
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2011-02-17
    相关资源
    最近更新 更多