web-dev-qa-db-ja.com

VisualStudioが名前空間の外にディレクティブを使用することを停止します

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
    {
    }
}
21
dav_i

一般的に、クラスのトップにusingステートメントを含めることに害はないと思います。実際、そこに含める方が簡単だと思うので、そのルールを尊重するかどうかはあなた次第です。

ただし、これを行うと、すべてのファイルテンプレートが使用可能になり、編集できます。答えを参照してください 新しいC#クラス/インターフェイスのVisual Studioテンプレートを編集するにはどうすればよいですか? 各VisualStudioバージョンのどこにあるかを詳しく説明します。

そこに着いたら、レイアウトを変更できます。たとえば、基本的なクラスは次のようになります。

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$
    {
    }
}

ただし、変更するファイルがかなりある可能性があります。

11
Ian

これはRe-sharperで設定できます。

再シャープン>オプション> C#>名前空間のインポート> usingディレクティブを最も深いスコープに追加します。

23
Adam_Dev

VS 2015および2017用のVisual Studio拡張機能もあり、これにより、事後のusing宣言が修正されます。また、特定の宣言をグループ化するためのいくつかの構成オプションもあります(System.*

https://marketplace.visualstudio.com/items?itemName=everfor88.UsingDirectiveFormatter

enter image description here

0