在.NET应用程序中删除不必要的命名空间的方法

Edw*_*ard 13 .net c# visual-studio-2010

有没有办法从类中删除不必要的"使用"语句?

例如,我可能有一个复杂的类,我可以在其中添加自己的命名空间,但也有一些由Visual Studio自动添加的命名空间,我也可能使用它们:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Windows.Navigation;
using System.IO.IsolatedStorage;
using Microsoft.Phone.Shell;
using System.Net.NetworkInformation;
using System.ServiceModel.Syndication;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml;
using System.Xml.Linq;
using Microsoft.Phone.Controls;
using Telerik.Windows.Controls;
using MyApp.Models;
using MyApp.Services;
Run Code Online (Sandbox Code Playgroud)

有没有办法检测哪些名称空间正在使用哪些名称空间不被删除?

注意:我相信这个问题适用于任何平台(桌面,电话,Web等).

Jon*_*eet 32

是的 - Visual Studio可以为您完成此操作.在文本编辑器的上下文菜单中,选择"组织使用">"删除并排序".(你可以删除,但为什么不同时排序?:)

就个人而言,我在Ctrl-Shift-U的热键上使用它......这是一个非常方便的功能.

作为旁注,这些不是using 陈述 - 它们是using 指令.using陈述是处理资源的陈述.

  • @CodeInChaos:为什么?如果您不使用它们,为什么要它们呢?您始终可以使用Ctrl-.如果您尝试使用当前未导入的命名空间中的类型,请稍后再次导入它. (5认同)
  • @CodeInChaos:它似乎不仅仅是Visual Studio,但我相信R#*会支持它.这样说 - 我广泛使用"删除使用",我从来没有*发现它是一个问题.你总是可以输入"Enumerable"并导入它 - 几乎不是时间杀手. (3认同)
  • @CodeInChaos - 是的,我讨厌这个残酷的人.克鲁夫特在小型项目中并不是什么大不了的事,但在大型项目中它是彻头彻尾的压倒性优势.当我打开一个不熟悉的文件时,我首先注意到的是使用`指令'是多么干净.这让我意识到它的内容是如何保持的. (3认同)
  • 这种自动导入是否适用于扩展方法?我喜欢在Intellisense中使用通用集合等,即使我还没有使用它们. (2认同)
  • 猜猜我真的应该买resharper.我一直听到有关它的好消息. (2认同)

Mar*_*arz 13

右键单击班级 - >组织使用 - >删除和排序


Rit*_*ton 5

是的,右键单击使用并选择'组织使用 - >删除使用'Resharper比VS更好.

  • 只是好奇...... Resharper的版本如何做得更好? (2认同)