我读了article,但这对我没有帮助。
我的目标是找到具有自定义属性的类。 由于我不需要任何实例或使用代码,有没有一种方法可以加载DLL文件并在代码中搜索我想要的内容,而无需解决依赖关系问题?查找代码。
答案 0 :(得分:0)
如果要获取所有应用程序域程序集类型,可以通过捕获ReflectionTypeLoadException
来避免该问题:
public static class AssemblyExtension
{
public static IEnumerable<Type> GetLoadableTypes(this Assembly assembly)
{
if (assembly == null) throw new ArgumentNullException(nameof(assembly));
try
{
return assembly.GetTypes();
}
catch (ReflectionTypeLoadException e)
{
return e.Types.Where(t => t != null);
}
}
}
您可以像这样使用它:
var types = (from domainAssembly in AppDomain.CurrentDomain.GetAssemblies().Where(x => !x.IsDynamic)
from assemblyType in domainAssembly.GetLoadableTypes()
select assemblyType);
如果您以程序集为目标但要加载而不加载其依赖项,请使用重载之一: 如此处记录:How to: Load Assemblies into the Reflection-Only Context
Assembly.ReflectionOnlyLoad(/*your appropriate parameter assembly name or something else*/);