Как настроить библиотеки базовых классов в моем файле app.config? - PullRequest
0 голосов
/ 15 апреля 2009

Я нашел несколько фрагментов информации, относящихся к 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"));
    }
  }
}

Ответы [ 2 ]

2 голосов
/ 15 апреля 2009

Одним из полезных ресурсов являются файлы конфигурации на уровне машины. Фактические файлы являются простыми, но рядом с ними есть файлы «.comments», которые дают довольно подробные примеры того, чего можно достичь. Например, посмотрите в

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

Это даст вам некоторое представление о том, что достижимо. Везде, где вы видите элементы коллекции, как в случае элементов <traceSwitches> и <traceListeners>, отдельные элементы <add>, содержащиеся в них, могут различаться в зависимости от того, что вы добавляете (т.е. конкретные атрибуты этих элементов <add> будут варьироваться в зависимости от того, что именно вы добавляете в коллекцию). Для этого вам нужно обратиться к конкретным областям документации, но поиск элемента <traceSwitches> в MSDN должен послужить приличной отправной точкой.

0 голосов
/ 15 апреля 2009

Они все настраиваются таким образом. Вот почему ты ничего не находишь.

Хорошо, возможно, не все, но, конечно, большинство. Если вы хотите знать, используйте Reflector, чтобы найти все производные классы System.configuration.ConfigurationSection и т. Д.

...