2014-10-29 80 views
10

在Visual Studio(或Resharper)中是否有一个设置允许您指定哪些命名空间应该是默认的,以及它们放入的范围?停止Visual Studio在命名空间外放置使用指令

默认为MVC项目的例子是

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace Namespace 
{ 
    public class Class1 
    { 
    } 
} 

但ReSharper的和抱怨了StyleCop:

所有使用指令必须放置在命名空间内。 [规则StyleCop的:SA1200]
使用指令不需要通过代码,可以安全删除

有没有一种方法,使简单的默认:

namespace Namespace 
{ 
    public class Class1 
    { 
    } 
} 
+1

是的,你可以编辑类模板; http://stackoverflow.com/questions/2072687/how-do-i-edit-the-visual-studio-templates-for-new-c-sharp-class-interface – 2014-10-29 11:36:58

+0

@AlexK。谢谢。投票关闭这个作为愚蠢:) – 2014-10-29 11:40:18

+0

@dav_i:答案可能是重复的 - 但我猜你不知道模板存在?所以基于这个事实可能值得保留这个问题。 – Ian 2014-10-29 11:43:42

回答

9

一般来说,我不相信在您的班级中包含using州级考生有任何伤害。我实际上发现将它们包括在内容更容易,所以取决于你是否要尊重这个规则。

但是,如果您这样做,所有的文件模板都可用并且可以编辑。请参阅回答How do I edit the Visual Studio templates for new C# class/interface?来详细说明他们在每个Visual Studio版本上的位置。

一旦你在那里你可以改变的布局,因此,例如一个基本类的样子:

using System; 
using System.Collections.Generic; 
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq; 
$endif$using System.Text; 
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks; 
$endif$ 
namespace $rootnamespace$ 
{ 
    class $safeitemrootname$ 
    { 
    } 
} 

你可以改变这以下或类似:

namespace $rootnamespace$ 
{ 
    using System; 
    using System.Collections.Generic; 
    $if$ ($targetframeworkversion$ >= 3.5)using System.Linq; 
    $endif$using System.Text; 
    $if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks; 
    $endif$ 

    class $safeitemrootname$ 
    { 
    } 
} 

有可能尽管有不少文件需要更改!

+0

_一般来说,我不相信包括使用顶部的语句是有害的你的class_ - 编译器将搜索从命名空间内部开始的指令,如果找不到,将继续寻找名称空间之外的指令。所以 - 如果你在命名空间之外放置指令,并且我将在名称空间内创建具有相同名称的类 - 那么将使用“我的”类。把命令放在命名空间里是非常小的工作,可以在代码中增加更多的安全性 – Fabio 2017-07-04 09:33:51

10

您可以在Re-sharper中进行设置。

Re-sharper>选项> C#>名称空间导入>将使用指令添加到最深的范围。

+0

嗨,谢谢你的回答。这个设置似乎只在_adding_ namespaces时才起作用。不创建新文件。 – 2014-10-29 11:45:59

+0

您可以使用上面建议的模板,请参阅http://stackoverflow.com/questions/2072687/how-do-i-edit-the-visual-studio-templates-for-new-c-sharp-class-接口 – 2014-10-29 11:54:22

+0

重置该标志适用于ReSharper8.2和VS2013。绕过。 – 2015-06-04 06:04:34

相关问题