Почему на некоторых машинах не загружается файл DLL.config?

У меня есть надстройка Outlook, написанная на C#, MyAddin.dll, которая имеет файл конфигурации MyAddin.dll.config. Оба хранятся в одном каталоге. Они размещаются там и устанавливаются установщиком. На большинстве установок нет проблем с поиском и чтением файла конфигурации. Но в некоторых случаях (точно такая же версия, установка и т. Д.).Config никогда не открывается.

Содержимое файла конфигурации выглядит следующим образом...

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
      ...
    </configSections>
    <system.diagnostics>
      <switches>
        <add name="MySwitch" value="4" />
      </switches>
    </system.diagnostics>
</configuration>

Я неявно загружаю этот конфигурационный файл с вызовом в моем дополнении в одном из моих классов...

internal static TraceSwitch myTraceSwitch = 
    new TraceSwitch("MySwitch", "My Trace Level Switch");

Как я уже сказал, это работает на многих установках, но не на нескольких. Я запустил PROCMON, чтобы наблюдать за событиями файла в файле конфигурации. В системах, где файл загружается, PROCMON показывает его в трассировке. В системах, где он не загружается, PROCMON не показывает упоминания файла конфигурации.

Почему моё расширение (DLL) скомпилированного приложения C# правильно загружается в одном экземпляре, но даже не пытается загрузить файл конфигурации в другом? Или не могли бы вы дать предложения по диагностике этого? где искать и т.д.

Дополнительная информация: Надстройка скомпилирована "Любой процессор", она установлена ​​на Windows 7 x64. 32-разрядная версия Office 2010 (Outlook) установлена. Все эти параметры верны как для рабочих версий, так и для той, которая не открывает файл конфигурации.

Дополнительная информация (21.02.2012): надстройка построена в режиме релиза. В VS2008 Project Properties>Build проверяется "Определить константу TRACE". Решение предназначено для.NET 3.5 Framework. Поведение выглядит так, что реализация System.Diagnostics.TraceSwitch на машинах, на которых это происходит не так, отличается от других машин. Я использовал обозреватель процессов, чтобы сравнить сбойную машину с работающей, и разница главным образом в том, что сбойная машина имеет в основном предварительно скомпилированные сборки, а рабочая - нет. Должно ли это иметь значение?

1 ответ

Не могли бы вы более явно сказать своему коду найти информацию о конфигурации с помощью ConfigurationChannelFactory?

http://msdn.microsoft.com/en-us/library/dd575430%28v=VS.100%29.aspx

Другие вопросы по тегам