【问题标题】:Find all references of a dll in a project查找项目中某个 dll 的所有引用
【发布时间】:2013-06-16 07:49:16
【问题描述】:

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

目前我使用了两个进程(视情况而定):

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

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

【问题讨论】:

    标签: visual-studio dll-reference


    【解决方案1】:

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

    展开References并选择Find code Dependent on Module

    然后结果如下所示:

    【讨论】:

    • 太棒了!谢谢你的提示。从来不知道 Resharper 可以做到这一点!
    【解决方案2】:

    没有 Resharper,但你有 Sublime Text?

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

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

    *.scsproj
    

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

    Include="[full namespaced name of library]"
    

    例如:

    Include="System.Xml.Linq"
    

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

    【讨论】:

    • 我不是在寻找引用 dll 的项目,而是在寻找哪些类使用了 dll 中定义的成员。
    • 这太棒了!我可以在几年前使用这个。虽然我使用了类似于Include=".*Dll\.Name 的正则表达式模式(注意.
    【解决方案3】:

    没有任何扩展?

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

      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;
        }
    

    【讨论】:

      【解决方案4】:

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

      1. 在解决方案资源管理器中展开项目。
      2. 展开参考部分。
      3. 右键单击与相关 dll 对应的引用(应具有相同的名称)。
      4. 在对象浏览器中选择视图。
      5. 展开与您的 dll 对应的对象。
      6. 扩展命名空间
      7. 右键单击类并选择查找所有引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 2017-05-07
        • 2015-10-21
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        相关资源
        最近更新 更多