移除未使用的 Using

    从MSDN看到一篇关于using管理的一篇文章,感觉不错,原文:http://msdn.microsoft.com/zh-cn/library/bb514115.aspx

Visual Studio 用户界面中的“移除未使用的 Using”选项用于移除源代码中未使用的 using 指令、using 别名和 extern 别名。调用该操作有两种方式:

  • 主菜单:在“编辑”菜单上指向“IntelliSense”,再指向“组织 Using”,然后单击“移除未使用的 Using”

  • 上下文菜单:右击代码编辑器中的任意位置,指向“组织Using”,再单击“移除未使用的 Using”

    说明:

    如果对未生成的源代码执行“移除未使用的 Using”,则可能会移除某些必需的 using 指令。

下面的示例显示了对源代码执行“移除未使用的 Using”所生成的结果。

执行之前

执行之后

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("test");
        }
    }
}
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("test");
        }
    }
}

在前面的示例中,只有 System 将在以后用于源代码中。其他 using 指令(包括重复的 System using 指令)将被移除。

条件预处理器指令

“移除未使用的 Using”仅移除活动块中未使用的指令和别名。下面的示例阐释了这一点:

执行之前

执行之后

#define DEBUG

#if DEBUG

using System;

using System.Collections.Generic;

using System.Linq;

#else

using System.Text;

#endif

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

List<int> myList = new List<int> { 1, 2, 3 };

Console.WriteLine(myList);

}

}

}

#define DEBUG

#if DEBUG

using System;

using System.Collections.Generic;

#else

using System.Text;

#endif

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

List<int> myList = new List<int> { 1, 2, 3 };

Console.WriteLine(myList);

}

}

}

在上例中,既未使用 System.Text,也未使用 System.Linq。但是,由于 System.Text 不在活动块中,因此只会移除System.Linq

注释

只有注释位于指令或别名的标记之间时,“移除未使用的 Using”才会移除注释。出现在标记之前或之后的注释都不受影响。下面的示例阐释了这一点:

执行之前

执行之后

using System;

/* Comment before remains */

using /* Comment between removed */ System.Linq;

// Comment after remains

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("My Example");

}

}

}

using System;

/* Comment before remains */

// Comment after remains

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("My Example");

}

}

}

在上面的示例中移除了 System.Linq。只会移除位于指令标记之间的注释。

posted on 2009-06-28 11:38  ToKens  阅读(443)  评论(0编辑  收藏  举报