Почему на некоторых машинах не загружается файл 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