2015-05-12 28 views
2

我希望我能找到一个更好的方式来标题,但希望它更清晰,正如我解释的。我也希望Visual Studio支持我想使用它,或者有人知道插件或光滑的解决方法可以回答我的问题。在C#和VS2012中,如何查找所有使用特定“using”指令的行?

真正简单的例子:

using System.IO 
public class MyClass 
{ 
    if (File.Exists("myfile.txt")) 
    { 
     //Do something that doesn't involve System.IO 
    } 
} 

我想用(如System.IO)在特定的点,找到每一个依赖于使用指令,如“File.Exists”行线。

在VS2012中,您可以右键单击文件开头的“使用”指令,然后选择组织使用>删除未使用的使用。这很好,但我想要做相反的事情。

一个笨拙和耗时的解决方案。 一种方法是擦除使用线并尝试构建,然后查看所有错误以尝试找到合适的错误。这个答案就像一个黑客,需要时间,并将结果作为错误列表。

The Circumstance。 我重构了一堆代码。其中一个类有超过4000行代码和13条使用指令。在看内部参考资料时,我可以说这个800磅的大猩猩类是从系统的不同部分引用命名空间。我想确定使用特定使用的代码的区域,以帮助我分解这个类。仅使用缺少的使用进行编译需要花费时间,并且不会以有用的格式生成结果。

尝试用另一种方式来表达问题: “如何让Visual Studio向我展示依赖于特定using指令的所有代码行?”

+0

它不像我记得的那样。香草VS2012的重构功能并不在那里。编写一些分析器会更容易,而且可能会修复代码以使其自动化。 –

+1

您也可以使用完全限定名称对系统的另一部分进行依赖,然后不涉及使用指令。我会忘记使用指令并尝试识别用法。你有没有试过NDepend?自从我使用它以来已经有一段时间了,但是测量组件之间的耦合的IIRC正是它最擅长的。 –

+0

我建议使用http://www.ndepend.com/。 –

回答

1

您可以右键单击使用语句,然后从下拉菜单中单击“查找所有引用”。

+0

这并不完全。首先,它只返回在方法调用中指定名称空间的结果。所以它会找到_if(System.IO.File.Exists(“myfile.txt”))_,但它不会找到_if(File.Exists(“myfile.txt”))_。它还搜索整个项目,而不是一个文件/类。 – Earendil

+0

我明白了。在你找到它们之后,你将如何处理所有使用指令的人? – User555

+0

我们将它作为如何打破4000线课程的指导。使用内部库名称的实例并不意味着太多,但想象一下,您有一个巨大的类正在调用用于“UI显示”,“数据库访问”的库。如果您发现有1000行代码正在对数据库进行调用,您可能会怀疑它是迁移到自己的类的不错选择。 – Earendil

相关问题