在多个dll文件中搜索引用

时间:2016-03-21 12:26:33

标签: .net search dll reference

假设您有一个包含100个.NET dll文件的文件夹。这些dll文件中的每一个都可能包含也可能不包含对具有特定版本号的某个.NET dll的引用 - 例如," MyCompany.MyCompanyProject.dll",版本1.2.0。你如何找出哪个dll文件实际包含这个引用?你可以使用像Reflector这样的工具逐个浏览文件,但有更快的方法吗?

2 个答案:

答案 0 :(得分:1)

这里有一些c#代码,如果你没有可用的visual studio,可以适用于powershell。您将需要对System.IO和System.Reflection的引用。

        foreach (string f in Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories))
        {
            try
            {
                FileInfo fi = new FileInfo(f);
                Assembly asm = Assembly.LoadFrom(f);
                string asmName = asm.GetName().Name;
                Version asmVer = asm.GetName().Version;
            }
            catch (BadImageFormatException)
            {
                //swallow
            }
            catch (Exception)
            {
                MessageBox.Show(ex.Message);
            }
        }

答案 1 :(得分:1)

没有。你应该使用反射。但我可以加载thia程序集作为反射。

Assembly asm = Assembly.ReflectionOnlyLoad("Source");
foreach (AssemblyName an in asm.GetReferencedAssemblies())
{
    Display("Name={0}, Version={1}", an.Name, an.Version); 
}

此外,您可以将它们加载到另一个AppDomain中,然后进行处理。 它并不快捷,但您当前的AppDomain会很清楚。