我有一个可执行文件,比如abc.exe,它引用a.dll(与可执行文件相同的文件夹),b.dll(随机文件夹中)和c.dll(随机文件夹中)。使用System.Diagnostics.Process来反映引用的程序集?
但是,这些DLL不一定与可执行文件(或GAC)位于同一目录中,这是我无法做的任何事情。
我试过使用System.Reflection.Assembly来试图找到abc.exe使用的所有引用程序集。
foreach (AssemblyName an in assembly.GetReferencedAssemblies())
{
Assembly.Load(an);
}
这似乎是加载可执行文件目录(a.dll)中的程序集,但并不出人意料地抛出其他文件没有发现异常。
我的想法是使用的System.Diagnostics.Process加载过程,然后反思的过程,因为这应该告诉我在哪里可以找到B.DLL和c.dll(?)
不过,我不不知道如何去做。这是否可能,如果是这样,那该怎么办?谢谢!
如果exe或dll的分发者没有将依赖关系放在相同的位置或GAC中作为调用它们的文件,那么应用程序可能会从dll或exe中使用Assembly编码的指定位置动态地加载它们解决...如果是这种情况,我怀疑你会通过反射找到位置... – devHead
这是正确的唐,有一段代码捕捉程序集没有发现异常(不知道它被称为是什么)和引用到一个文本文件来查找特定的位置。 我不想做的就是依赖这个文本文件。在这种情况下不可能吗? – r3su
你看到了吗? http://msdn.microsoft.com/en-us/magazine/cc163641.aspx – devHead