提问人:Earendil 提问时间:5/13/2015 更新时间:5/13/2015 访问量:113
在 C# 和 VS2012 中,如何找到使用特定“using”指令的所有行?
In C# and VS2012, How do I find all lines that make use of a particular "using" directive?
问:
我希望我能找到一种更好的方法来表达标题,但希望随着我的解释,它会变得更加清晰。我还希望 Visual Studio 支持我想使用它的用途,或者有人知道可以回答我问题的插件或巧妙的解决方法。
非常简单的例子:
using System.IO
public class MyClass
{
if (File.Exists("myfile.txt"))
{
//Do something that doesn't involve System.IO
}
}
我想指向一个特定的 use(如 System.IO)并找到依赖于 using 指令的每一行,例如“File.Exists”行。
在 VS2012 中,您可以右键单击文件开头的“using”指令,然后选择“组织使用”>“删除未使用的使用”。这很好,但我想做相反的事情。
一个笨拙且耗时的解决方案。一种方法是擦除一个 using 行,并尝试构建,然后查看所有错误以尝试找到合适的错误。这个答案感觉像是一个黑客,需要时间,并将结果作为错误列表产生。
情况。我正在重构一堆代码。其中一个类有 4000 多行代码和 13 个 using 指令。在查看内部引用时,我可以看出这个 800 磅的大猩猩类引用了来自系统不同部分的命名空间。我想确定使用特定用法的代码区域,以帮助我细分此类。简单地使用缺少的 using 进行编译需要时间,并且不会以有用的格式生成结果。
尝试以另一种方式表达问题: “如何让 Visual Studio 向我显示依赖于特定 using 指令的所有代码行?”
答:
1赞
User555
5/13/2015
#1
您可以右键单击 using 语句,然后从下拉菜单中单击“查找所有引用”。
评论
0赞
Earendil
5/13/2015
这并不完全能做到。首先,它只返回在方法调用中指定命名空间的结果。所以它会找到 if (System.IO.File.Exists(“myfile.txt”)) 但它不会找到 if (File.Exists(“myfile.txt”))。它还搜索整个项目,而不是一个文件/类。
0赞
User555
5/15/2015
明白了。在你找到指令之后,你到底打算如何处理所有使用指令的人?
0赞
Earendil
5/16/2015
我们把它作为一种指导,指导如何打破 4000 行类。使用内部库名称的真实示例意义不大,但想象一下,您有一个巨大的类,它正在调用用于“UI 显示”、“数据库访问”的库。如果你说发现有 1000 行代码正在调用数据库,你可能会怀疑它是移动到它自己的类的一个很好的候选者。
0赞
User555
5/17/2015
我可以建议再尝试两件事:1)如果您使用的是Visual Studio 2012或2013,则可以突出显示该特定的使用指令或代码中的任何其他单词,使用相同单词的所有其他地方都将在您的代码中突出显示,以便您可以更轻松地看到它们。2)您可以按CTRL + F,然后将显示一个搜索对话框。选中替换为复选框,在搜索字段中输入您要查找的单词,在替换字段中键入 /*找到您*/,使用该单词的所有代码部分都将替换为 /*找到您*/ 注释。
评论