12

我的团队绝对喜欢使用区域,考虑到这一点,它几乎已成为我们代码中的事实标准。我最近意识到,每次创建类、测试方法等时,我都厌倦了编写或 ctrl+c / ctrl+v'ing 这些...

我想知道是否有可能(通过宏或其他一些功能)让 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 会自动将这两个区域添加到方法中,例如:

[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 键。

于 2012-11-26T15:40:06.200 回答
4

我知道的两种方法:

根据此MSDN 指南创建一个片段。

下载具有“环绕声”功能的 Visual Studio Extension Productivity Power Tools 。这围绕着用户使用所选片段进行的选择,例如#region #endregion或 if 语句。

于 2012-11-26T15:22:26.117 回答
3

不知道为什么这么多人反对地区;他们帮助我很容易地对我的代码进行分类。我使用的是放置在我的一个键盘按钮上的宏,它会自动为我插入区域。我可以给你的一个提示是,如果可能的话,在每次按键之间放一点延迟,因为 VS 有时会错过字符。

希望这可以帮助!

于 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 下

稍后它将可以在 C# 代码中访问,方法是右键单击 > 插入片段 > 我的代码片段 > #Classregion

于 2013-12-05T13:45:48.877 回答
1

如果你有 Resharper,那么 File Structure 窗口对于管理区域非常方便,允许简单的拖放来移动方法/属性块等。它显示您的区域(可折叠)并与主代码视图同步:

https://www.jetbrains.com/help/resharper/Reference__Windows__File_Structure_Window.html

例如此处显示的称为预览的区域:

这里

于 2018-05-29T14:46:52.127 回答
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

我同意区域 a 是一个坏主意,但对每个人来说都是他自己的。

您可能想看看NArrange

于 2012-11-26T15:23:20.717 回答