Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 查找项目中dll的所有引用_Visual Studio_Dll Reference - Fatal编程技术网

Visual studio 查找项目中dll的所有引用

Visual studio 查找项目中dll的所有引用,visual-studio,dll-reference,Visual Studio,Dll Reference,在VisualStudio2010(或2012)中,有一种方法可以定位代码中提到引用dll中定义的任何类/方法的所有引用 目前,我使用了两个流程(取决于具体情况): 第一种方法是从项目中删除dll引用,然后记下所有生成错误的位置 另一种方法是在对象浏览器中打开引用,然后扩展到它的名称空间,对于每个名称空间,我都进行手动搜索,但这并不总是有助于找到所有引用,而且由于遗留代码具有跨多个程序集的相同名称空间,因此需要过滤大量噪音 这两个都不是真正理想的解决方案,有没有更简单的方法?可能通过VS扩展

在VisualStudio2010(或2012)中,有一种方法可以定位代码中提到引用dll中定义的任何类/方法的所有引用

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

  • 第一种方法是从项目中删除dll引用,然后记下所有生成错误的位置
  • 另一种方法是在
    对象浏览器
    中打开引用,然后扩展到它的名称空间,对于每个名称空间,我都进行手动搜索,但这并不总是有助于找到所有引用,而且由于遗留代码具有跨多个程序集的相同名称空间,因此需要过滤大量噪音

这两个都不是真正理想的解决方案,有没有更简单的方法?可能通过VS扩展。

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

展开
参考
并选择
查找依赖于模块的代码

结果如下所示:


没有重竖琴,但你有崇高的文字

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

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

*.scsproj
然后在“查找:”字段中搜索字符串

Include="[full namespaced name of library]"
例如:

Include="System.Xml.Linq"

将在解决方案中查找引用System.Xml.Linqdll的所有项目。

是否没有任何扩展

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

  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;
    }
private static List findallreferences(ref int-ctr、string-dir、string-projectToSearch)
{
列表引用=新列表();
foreach(目录.GetFiles(dir,“*.csproj”,SearchOption.AllDirectories)中的var projFile)
{
if(projFile.IndexOf(projectToSearch,StringComparison.OrdinalIgnoreCase)>=0)
继续;
//var t=假;
var lines=File.ReadAllLines(projFile);
foreach(行中的var行)
{
if(line.IndexOf(projectToSearch,StringComparison.OrdinalIgnoreCase)>=0)
{
ctr++;
参考添加(projFile);
打破
}
}
}
返回参考文献;
}

太棒了!谢谢你的提示。从来都不知道Resharper能做到这一点!我不是在寻找引用dll的项目,而是在寻找哪些类使用dll中定义的成员。这太棒了!我几年前就可以用这个了。尽管我使用了类似于
Include=“.*Dll\.Name
(注意
上的转义)的正则表达式模式