如何获取出所有引用DLL?(不是获取已加载的程序集,而是全部)
如题。 --------------------编程问答--------------------Array array=AppDomain.CurrentDomain.GetAssemblies();
--------------------编程问答-------------------- CurrentDomain//当前应用程序域~
array[index].Location()//当前引用dll的路径 --------------------编程问答-------------------- System.AppDomain _Domain = System.AppDomain.CurrentDomain;
Assembly[] _AssemblyList = _Domain.GetAssemblies();
IList<string> _DllPath = new List<string>();
for (int i = 0; i != _AssemblyList.Length; i++)
{
_DllPath.Add(_AssemblyList[i].Location);
}
--------------------编程问答-------------------- Array array=AppDomain.CurrentDomain.GetAssemblies();
只能获取到已加载的DLL,因为.net使用的是延迟加载,主程序没有使用某个DLL的功能时,是不会加载的。因此上面的方法只不能使用要求,不知道有没有方法能做到。。。 --------------------编程问答-------------------- 把你要用的dll都放在一个文件里,你用程序查这个文件里有哪些dll不就行了?
说的不对当我没说啊
--------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 一个具体的 Assembly,
有 GetReferencedAssemblies 调用,
用于获取这个程序集引用到的所有程序集名称,
是完整名称, 这些程序集可能尚未加载. --------------------编程问答-------------------- 获取程序bin目录,然后通过反射,获取全部程序集的名字 --------------------编程问答-------------------- 觉得可行 --------------------编程问答-------------------- System.Reflection.Assembly.GetEntryAssembly().GetReferencedAssemblies();
就可以 --------------------编程问答-------------------- 谢谢。
System.Reflection.Assembly.GetEntryAssembly().GetReferencedAssemblies(); 是可行的,
但我得到的是Assembly对象集,而它返加的是AssemblyName对象集。。 --------------------编程问答-------------------- System.Reflection.Assembly.GetEntryAssembly().GetReferencedAssemblies();
好像也不行,也是已加载的。 --------------------编程问答-------------------- 有的程序集又调用了别的程序集,如果想全部获取的话,恐怕需要用Hash配合递归进行搜索。 --------------------编程问答-------------------- 有没有谁知道呀。。。 --------------------编程问答-------------------- 再顶一次,期待有效方法 --------------------编程问答-------------------- 看来是找不到方法了。
补充:.NET技术 , C#