12

私のチームはリージョンの使用が大好きで、それを念頭に置いて、コードのデファクト スタンダードになりつつあります。最近、クラスやテストメソッドなどを作成するたびに、これらを記述したり、ctrl + c / ctrl + v したりするのにうんざりしていることに気づきました...

(マクロまたはその他の機能を介して) Visual Studio でこれらをコードに自動的に追加できるかどうか疑問に思っていました。

たとえば、プロジェクトに新しいクラス ファイルを追加する場合、何らかの魔法を実行して、Visual Studio にファイルを次のように生成させることはできますか。

namespace Test
{
    class MyClass
    {
        #region ------------ members --------------
        #endregion

        #region ------------ properties --------------
        #endregion

        #region ------------ methods --------------
        #endregion
    }
}

現在、これを行う方法がわからないことに本当に悩まされているのは、単体テストを書いているときです。これは少しトリッキーかもしれませんが、私たちのチームはそれらの使用に固執しているため、メソッドをテストするためにリージョン--set up--とリージョンを自動的に追加する方法を見つけようとしていました。--run test--

だから、新しいテストメソッドを作成するとき

[TestMethod]
public void WhenCondition_WillProduceExpectedResult()
{
}

Visual Studio は、次のようにこれら 2 つの領域をメソッドに自動的に追加します。

[TestMethod]
public void WhenCondition_WillProduceExpectedResult()
{
   #region ------------- set up -------------
   #endregion 

   #region ------------- run test -------------
   #endregion 
}

これが可能かどうか、可能であれば、vs-macro 経由か拡張機能経由かは不明です。どんな助けでも大歓迎です!

4

7 に答える 7

22

次のような単純なコード スニペットを作成できます。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Simple</Title>
      <Shortcut>simple</Shortcut>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>name</ID>
          <ToolTip>Replace with the name of the action</ToolTip>
          <Default>Action</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        public void $name$()
        {
            #region ------------- set up -------------
            #endregion 

            #region ------------- run test -------------
            #endregion 
        }
        ]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

そのファイルを に保存しますC:\Users\<your_user>\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets

Visual Studio を再度開いて、クラスに「simple」と入力し、Tab キーを 2 回押すだけです。

于 2012-11-26T15:40:06.200 に答える
4

私が知っている2つの方法:

このMSDNガイドに従ってスニペットを作成します。

「サラウンド」機能を備えたVisualStudioExtension ProductivityPowerToolsをダウンロードします。#region #endregionこれは、たとえば、またはifステートメントなど、選択したスニペットでユーザーが選択したものを囲みます。

于 2012-11-26T15:22:26.117 に答える
3

多くの人が地域に対して反対の声を上げている理由がわかりません。コードを非常に簡単に分類するのに役立ちます。私が使用しているのは、リージョンを自動的に挿入するキーボード ボタンの 1 つに配置されたマクロです。私があなたに与えることができる 1 つのヒントは、可能であれば各キーを押す間に少しの遅延を置くことです。

お役に立てれば!

于 2014-05-26T21:07:22.313 に答える
2

次のスニペットを使用します

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>#Classregion</Title>
      <Shortcut>#Classregion</Shortcut>
      <Description>Code snippet for #Classregion</Description>
      <Author>Author Name</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>name</ID>
          <ToolTip>Region name</ToolTip>
          <Default>MyRegion</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp">
        <![CDATA[
        #region ------------- Members ---------------
        $selected$ $end$
    #endregion

  #region --------------- Properties ---------------
        $selected$ $end$
    #endregion

  #region --------------- Methods ---------------
        $selected$ $end$
    #endregion
    ]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

C:\Users\\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets の下に保存します。

後で、右クリック > スニペットの挿入 > マイ コード スニペット > #Classregion により、C# コードでアクセスできるようになります。

于 2013-12-05T13:45:48.877 に答える
1

Sam Harwell の回答で説明されているように、クラス テンプレートを編集することをお勧めします。

https://stackoverflow.com/a/2072717

Visual Studio バージョンのクラス テンプレートの場所にある class.cs ファイルを開くことができます。たとえば、Visual Studio 2017 Enterprise の場所は次のとおりです。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

テキスト エディタを使用してそのファイルを開き、領域を追加します。その後、すべての新しいクラスがリージョンで作成されます。

于 2019-11-01T13:40:56.983 に答える
0

そして、地域は悪い考えであることに同意しますが、それぞれ独自のものです。

NArrangeをご覧になることをお勧めします。

于 2012-11-26T15:23:20.717 に答える