Размещение локализованных ресурсов плагина в спец. подкаталоге

Compositum
Дата: 14.04.2014 14:14:03
Доброго времени суток.

Хочу локализованные ресурсы моей библиотеки (dll) хранились в подкаталоге .\resources, находящемся рядом с этой dll.

Разрабатываемая библиотека является плагином к некоторому хостовому приложению и размещается не в его каталоге (либо подкаталогах), поэтому воспользоваться XML элементом probing конфигурационного файла хостового приложения не получится.

Написал код, обрабатывающий событие AppDomain.ResourceResolve:

// Static constructor
static ExtensionApplication() {
  curDomain = AppDomain.CurrentDomain;
  curDomain.ResourceResolve += curDomain_ResourceResolve;
}

static Assembly curDomain_ResourceResolve(object sender,
  ResolveEventArgs args) {
  Ap.Document doc = cad.DocumentManager.MdiActiveDocument;
  if (doc == null) {
    return null;
  }
#if DEBUG
  doc.Editor.WriteMessage("ResourceResolve event occured...\n");
#endif
  Assembly exAsm = Assembly.GetExecutingAssembly();
  Assembly result = null;
  String dirName = Path.Combine(Path.GetDirectoryName(exAsm.Location),
    "resources");
  if (!Directory.Exists(dirName)) {
    doc.Editor.WriteMessage("Directory '{0}' was not found.\n", dirName);
    return null;
  }
  else {
    CultureInfo culture = Thread.CurrentThread.CurrentUICulture;
    String resDirName = Path.Combine(dirName, culture.Name);
    if (!Directory.Exists(resDirName)) {
      resDirName = Path.Combine(dirName, culture.TwoLetterISOLanguageName);
    }
    if (!Directory.Exists(resDirName)) {
      resDirName = Path.Combine(dirName, "default");
    }
    if (!Directory.Exists(resDirName)) {
      doc.Editor.WriteMessage("Localized directories of necessary " +
        "resources was not found.\n");
      return null;
    }
    String fn = Path.GetFileNameWithoutExtension(
      Assembly.GetExecutingAssembly().Location);
    String resFileName = Path.Combine(resDirName,
      String.Format("{0}.resources.dll", fn));
    if (!File.Exists(resFileName)) {
      doc.Editor.WriteMessage("File '{0}' was not found.\n", resFileName);
      return null;
    }
    try {
      result = Assembly.LoadFrom(resFileName);
      doc.Editor.WriteMessage("Assembly '{0}' loaded.\n", resFileName);    
    }
    catch (Exception ex) {
      doc.Editor.WriteMessage("{0}\n", ex.Message);
      String.Format("Assembly '{0}' not loaded\n", resFileName);
    }
    return result;
  }      
}

При загрузке библиотеки, автоматически выполняется код метода Initialize:
public void Initialize() {
  Ap.Document doc = cad.DocumentManager.MdiActiveDocument;
  if (doc == null) {
    cad.DocumentManager.DocumentActivated += DocMng_DocumentActivated;
    return;
  }
  else {
    PrintHelloMessage(doc.Editor);
  }
}

private void PrintHelloMessage(Ed.Editor ed) {
  if (ed == null)
    return;
  ResourceManager res = new ResourceManager(GetType());
  String loadedMsg = res.GetString("LoadedMsg");
  String copyright = res.GetString("Copyright");
  String about = res.GetString("About");

  ed.WriteMessage(loadedMsg, GetType().Assembly.Location);
  ed.WriteMessage("\n{0}", copyright);
  ed.WriteMessage("\n{0}\n\n", about);

  res.ReleaseAllResources();
}

void DocMng_DocumentActivated(object sender,
  Ap.DocumentCollectionEventArgs e) {
  cad.DocumentManager.DocumentActivated -= DocMng_DocumentActivated;
  PrintHelloMessage(e.Document.Editor);
}


На выходе вижу следующую информацию:
output
ResourceResolve event occured...
Assembly 'C:\public\sfsp\resources\default\sfsp.resources.dll' loaded.

Т.е. видно, что файл ресурсов найден и загружен. Однако локализованные сообщения, которые должны были выводиться в коде метода PrintHelloMessage отсутствуют. Я ожидал, что найдя ресурс, код продолжит своё выполнение и выведет все локализованные сообщения. Однако что-то не так... Почему так происходит?

Спасибо.
Compositum
Дата: 14.04.2014 14:48:54
В отладчике дохожу до строки кода
String loadedMsg = res.GetString("LoadedMsg");

в методе PrintHelloMessage, после чего выполняется код обработчика событий curDomain_ResourceResolve, но
по завершению обработки, выполнение кода в методе PrintHelloMessage не продолжается.
Compositum
Дата: 14.04.2014 17:46:58
Для наглядности набросал hello world (проект прикреплён ниже) для демонстрации проблемы: локализованный ресурс найден и загружен, но всё равно получаю исключение.

Картинка с другого сайта.