我发现了一些与app.config / web.config相关的信息片段,它直接通过app.config提示几乎无代码的BCL组件配置。但是,考虑到app.config中intellisense建议的标签数量,它表明存在大量的可能性,我无法找到任何有用的信息。
是否有任何文档支持配置文件的这个特定区域?我可以找到关于存储/检索配置信息的大量信息,以及关于编写我熟悉的自定义配置部分的少量信息,但是我找不到有关以这种方式配置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"));
}
}
}
答案 0 :(得分:2)
一个有用的资源是机器级配置文件。实际的文件很简单,但是它们旁边还有“.comments”文件,它们提供了可以实现的相当详细的示例。例如,看看
C:\的Windows \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG \ machine.config.comments
这会让你知道什么是可以实现的。在您看到集合元素的任何位置,如<traceSwitches>
和<traceListeners>
元素的情况,其中包含的各个<add>
元素可能会根据您添加的内容(即特定属性)而有所不同这些<add>
元素将根据您添加到集合中的具体内容而有所不同。为此,您需要查阅特定的文档区域,但在MSDN中搜索<traceSwitches>
元素应该是一个不错的起点。
答案 1 :(得分:0)
他们都可以通过这种方式配置。这就是你找不到任何东西的原因。
好吧,也许不是全部,但肯定是最重要的。如果您想知道,请使用Reflector查找System.configuration.ConfigurationSection等的所有派生类。