Я использую Structure Map для загрузки плагинов из дочернего каталога.
И основное приложение, и плагин ссылаются на DLL FileHelpers. FileHelpers имеет атрибуты, которые вы помещаете в класс, чтобы определить, чем ограничивается запись. Они определены в моем плагине. например.
[Delimited('\t')]
public class Test {
public string name;
}
Файл FileHelpers запускается из основного приложения с использованием определений классов, предоставляемых плагинами. Если я помещаю плагин dll в каталог под основным приложением, то я получаю проблему с библиотекой FileHelpers, жалуясь на то, что атрибут не может быть найден, однако, если он расположен рядом с основной библиотекой (та же папка), то он работает нормально.
Я поместил еще несколько отладочных операторов в мой код и обнаружил, что если
var type = typeof(Test);
var attributes = type.GetCustomAttributes(true);
используется, а не конкретный (тот, который использует FileHelpers)
var attributes = type.GetCustomAttributes(typeof(DelimitedAttribute), true);
затем он находит пользовательские атрибуты без каких-либо проблем.
Я думал, что это, возможно, вещь SM, но попробовал MEF и сделал это с помощью Assembly.Load (), и произошло то же самое.