我正在使用结构图从子目录加载插件。
主应用程序和插件都引用 FileHelpers dll。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() 进行,同样的事情发生了。