Visual Studio(或Resharper)中是否有一个设置允许您指定哪些命名空间应该是默认的以及它们放在哪个范围内?
例如,MVC项目的默认值为
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Namespace
{
public class Class1
{
}
}
但是Resharper和Stylecop抱怨道:
所有using指令必须放在命名空间内。 [StyleCop规则:SA1200]
代码不需要使用指令,可以安全地删除
有没有办法简单地制作默认值:
namespace Namespace
{
public class Class1
{
}
}
答案 0 :(得分:16)
您可以在Re-sharper中设置它。
重新锐化>选项> C#>命名空间导入>将using指令添加到最深的范围。
答案 1 :(得分: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$
{
}
}
虽然可能会有不少文件需要更改!
答案 2 :(得分:5)
现在有一种更简单的方法可以在不修改模板和 ReSharper 的情况下完成。自 Visual Studio 2019 更新 16.1 以来 发布后,您可以按照以下步骤在命名空间内设置 using:
答案 3 :(得分:0)
还有一个针对VS 2015和2017的Visual Studio扩展,可在事实发生后修复using
声明。它还具有一些用于对特定声明进行分组的配置选项(例如System.*
)
https://marketplace.visualstudio.com/items?itemName=everfor88.UsingDirectiveFormatter
答案 4 :(得分:0)
在Resharper 2020中,它位于“代码编辑”>“ C#”>“语法样式”>“将'using'”指令添加到最深的作用域。
答案 5 :(得分:0)
使用 .editorConfig 您可以添加以下内容。
# 'using' directive preferences
csharp_using_directive_placement =inside_namespace:warning