在Visual Studio中自动将区域添加到代码

时间:2012-11-26 15:09:28

标签: c# visual-studio-2010 region visual-studio-macros

我的团队非常喜欢使用区域,考虑到这一点,它几乎已成为我们代码中事实上的标准。我最近意识到,每次创建类,测试方法等时,我都会厌倦写作或者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还是扩展。非常感谢任何帮助!

7 个答案:

答案 0 :(得分:17)

您可以创建一个简单的代码段,如下所示:

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

答案 1 :(得分:4)

我知道两种方式:

根据此MSDN guide创建一个代码段。

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

答案 2 :(得分:3)

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

希望这有帮助!

答案 3 :(得分: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

稍后可以通过右键单击&gt;在C#代码中访问它。插入代码段&gt;我的代码片段&gt; #Classregion

答案 4 :(得分:0)

我同意区域a是一个坏主意,但对每个人都是一个坏主意。

您可能需要查看NArrange

答案 5 :(得分:0)

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

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

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

Here

答案 6 :(得分:0)

我更喜欢按照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

我使用文本编辑器打开该文件并向其添加区域。然后将使用区域创建所有新类。