我基本上想要这样做:
AppDomain domain = AppDomain.CreateDomain("DataSpecDomain");
Assembly dataSpecAssembly = domain.Load(fullAssemblyFilePath);
object[] dataSpecAttrCollection = dataSpecAssembly.GetCustomAttributes(typeof(DataSpecificationAttribute), true);
实际上,以前我没有使用AppDomain部分并且正在使用Assembly.LoadFrom(),这显然不是那么推荐的,而不是安全性。此代码的问题是我加载到此新域中的程序集是使用它们自己对第三方API的引用构建的。实际上,第三方API引用只是位于第三方exe目录中的实际内容的shell表示。引用这些时,Copy Local设置为False。最终结果是我得到了一个FileLoadException。如果我将Shell引用添加到Debug文件夹,它可以工作。有没有办法可以获取属性实例而无需处理加载程序集的依赖关系?或者有没有办法解决加载程序集的依赖关系,而无需将第三方API引用放在同一个文件夹中。
仅供参考,第三方产品设计有一个用于自动加载的特殊目录,这意味着典型的开发不需要在同一文件夹中引用它们。