9

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

目前我有两个我使用的过程(视情况而定):

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

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

4

4 回答 4

11

如果你安装 Resharper,你可以找到这个:

展开References并选择Find code Dependent on Module

在此处输入图像描述

结果显示如下:

在此处输入图像描述

于 2013-06-16T07:52:44.137 回答
4

没有 Resharper,但你有 Sublime Text?

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

在“位置:”字段中,输入:

*.scsproj

然后在“查找:”字段中,搜索字符串

Include="[full namespaced name of library]"

例如:

Include="System.Xml.Linq"

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

于 2015-12-03T16:30:06.983 回答
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;
    }
于 2017-09-06T08:50:40.527 回答
1

在 Visual Studio 2019 中执行此操作的步骤:

  1. 在解决方案资源管理器中展开项目。
  2. 展开参考部分。
  3. 右键单击与相关 dll 对应的引用(应该具有相同的名称)。
  4. 选择在对象浏览器中查看。
  5. 展开与您的 dll 对应的对象。
  6. 展开命名空间
  7. 右键单击该类并选择查找所有引用。
于 2021-09-01T11:39:03.197 回答