在项目中查找dll的所有引用

时间:2013-06-16 07:49:17

标签: visual-studio dll-reference

在Visual Studio 2010(或2012)中,有一种方法可以在代码中找到提及引用的dll中定义的任何类/方法的所有引用。

目前我使用了两个进程(取决于具体情况):

  • 第一个涉及从项目中删除dll引用,然后记下所有构建错误位置。
  • 另一种方法是在Object Browser中打开引用,然后扩展到它的命名空间,对于每个命名空间,我进行手动搜索,但这并不总是有助于查找所有引用,因为遗留代码具有跨越多个程序集的相同名称空间,需要过滤很多噪音。

这些都不是真正理想的解决方案,有没有更简单的方法呢?也许是通过VS扩展。

3 个答案:

答案 0 :(得分:7)

如果您安装Resharper,可以找到它:

展开References并选择Find code Dependent on Module

enter image description here

结果显示为:

enter image description here

答案 1 :(得分:3)

没有Resharper,但你确实有Sublime Text?

在Sublime Text中,选择'打开文件夹',然后选择包含解决方案的文件夹。然后选择菜单项查找 - > 在文件中查找...

在'其中:'字段,输入:

*.scsproj

然后在'查找:'字段,搜索字符串

Include="[full namespaced name of library]"

例如:

Include="System.Xml.Linq"

将在解决方案中找到引用 System.Xml.Linq dll的所有项目。

答案 2 :(得分:2)

没有任何扩展名?

只需编写一段代码......最简单......我发现通过代码编辑项目文件非常容易..

  private static List<string> FindAllRefrences(ref int ctr, string dir, string projectToSearch)
    {
        List<string> refs = new List<string>();
        foreach (var projFile in Directory.GetFiles(dir, "*.csproj", SearchOption.AllDirectories))
        {
            if (projFile.IndexOf(projectToSearch, StringComparison.OrdinalIgnoreCase) >= 0)
                continue;
            //var t = false;
            var lines = File.ReadAllLines(projFile);

            foreach (var line in lines)
            {
                if (line.IndexOf(projectToSearch, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    ctr++;
                    refs.Add(projFile);
                    break;
                }
            }
        }

        return refs;
    }