我正在尝试获取我在MEF中加载到主应用程序中的程序集的引用程序集列表。
我想确保在运行插件之前所有引用的程序集都存在于该文件夹中。
我尝试使用
List<AssemblyName> a = Assembly.GetEntryAssembly().GetReferencedAssemblies().ToList();
但是当我这样做时,它只显示我在那个阶段使用/加载的程序集。我想要一个完整的列表(在运行时)引用的程序集(VS中引用文件夹的副本),无论它们是在那一刻使用还是根本使用。
答案 0 :(得分:2)
在加载插件之前,您可以加载它仅用于反射,只加载文件的元数据。例如:
var assm = Assembly.ReflectionOnlyLoadFrom(@"Same.dll");
var reff = assm.GetReferencedAssemblies();
请记住,相关的库可以有他们的参考。
答案 1 :(得分:1)
您可以从文件元数据中提取该信息。最快的方法可能就是使用其中一个库来实现。
例如,您可以使用Mono.Cecil
像这样:
var md = ModuleDefinition.ReadModule(assemblyPath);
foreach (var reference in md.AssemblyReferences)
{
}