Я работаю над приложением Windows CE 6.0.Приложение загружает несколько внешних сборок динамически, используя.
Assembly assembly = Assembly.Load(path);
Эти файлы .dll находятся за пределами решения, но в каждой из них есть классы, реализующие общий интерфейс.
Как только сборки загружены, приложение проходит через каждый из классов и создает экземпляр, а затем вызывает метод .Load () для каждого из них.
//in class definition
private log4net.ILog _log = log4net.LogManager.GetLogger(this.GetType());
//in looping method
foreach (IPlugin plugin in _plugins)
{
try
{
plugin.Load();
}
catch (Exception e)
{
string message = string.Format("Plugin load error: {0}", plugin.Name); //breakpoint gets set here.
if (_log.IsErrorEnabled) _log.Error(message, e);
}
}
Это прекрасно работает, когда я развертываю приложение вустройство и запустить его.Однако, когда я запускаю это в отладчике (подключенном к устройству, а не к эмулятору), метод Load () одного из плагинов генерирует исключение System.NotSupportedException, которое перехватывается, и мы пытаемся зарегистрировать его.Однако свойство _log.IsErrorEnabled журнала Log4Net также вызывает исключение NotSupportedException.
Я получаю очень странное поведение, когда устанавливаю точку останова на строке, где я строю сообщение.Если я проверяю объект _log в окне наблюдения, я вижу, что свойства IsErrorEnabled и IsFatalEnabled оба генерируют NotSupportedExceptions, но другие свойства IsXXXEnabled возвращают True или False, как они должны.
Кроме того, если я проверяю исключение 'e' (которое является NotSupportedException), я вижу следующее в его свойстве StackTrace:
'((System.Exception) ($ исключение)) .StackTrace 'сгенерировал исключение типа' System.NotSupportedException '
У меня вопрос: что может быть причиной этого очевидного сбоя в среде отладки?Мне кажется, что некоторые из методов LogXNet IsXXXEnabled работают, а другие не могут быть подсказкой.