Я нашел несколько фрагментов информации, относящихся к app.config / web.config, которые намекают на почти безкодовую конфигурацию компонентов BCL непосредственно через app.config. Однако, учитывая количество тегов, предложенных intellisense в 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"));
}
}
}