我的团队非常喜欢使用区域,考虑到这一点,它几乎已成为我们代码中事实上的标准。我最近意识到,每次创建类,测试方法等时,我都会厌倦写作或者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还是扩展。非常感谢任何帮助!
答案 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
例如,此处显示名为预览的区域:
答案 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
我使用文本编辑器打开该文件并向其添加区域。然后将使用区域创建所有新类。