超好用的C#控制台应用模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
超好⽤的C#控制台应⽤模板
本⽂是Wei的公众号投稿⽂章:
默认模板之缺
在⼯作学习中,我们经常需要创建⼀些简单的控制台应⽤(Console App)去验证某个想法,或者作为⼩⼯具交付给其他同事。
通常我们的选择是 Visual Studio ⾃带的 Console App 模板,这个经典模板只有预设好的 csproj ⽂件和空荡荡的 Main ⽅法,偶尔还会附送⼀⾏ Console.WriteLine("Hello World!");,除此之外没有任何附加功能。
代码看起来⼤概是这样——
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
⾯对这如同⽩纸⼀样的模板,如果我们需要捕捉⼀下异常、调⽤⼀下异步⽅法、记录⼀下log呢?勤奋的你⼀定存有⼀些常⽤的经典代码⽚段和配置⽂件吧,那就⼀⼀复制进来呗……折腾了⼗来分钟后,终于可以开始写代码了……
N天之后,⼜需要新写个控制台应⽤了,我们再次重复⼀遍上述过程。
安装模板插件
受到的启发,Visual Studio Marketplace 上也出现了⼀款叫做的插件,顾名思义,就是在默认 Console App 模板基础上添加常⽤特性以解决痒点。
可以从 Visual Studio Marketplace 上直接下载 vsix ⽂件安装:
也可以在 Visual Studio 2017 的 Extensions and Updates 中输⼊ C# Console App Boilerplate 搜索并安装:
安装完成后,通过 Visual Studio 再次新建 Project 时,就可以在 Visual C# 分类下找到 Console App Boilerplate 的两个新模板。
模板便利特性
通过 Console App Boilerplate 模板新建 Project 后,我们可以看到编辑器窗⼝中默认打开的 Main.cs ⽂件——
我们可以直接运⾏样例代码,也可以将 Work ⽅法中样例代码替换成我们的业务逻辑。
样例代码直接运⾏的效果如下——
同样是控制台应⽤,那么它和经典的 Console App 模板究竟有何不同呢?我们打开 Program.cs ⽂件便可知晓——
使⽤了 C# 7.1 中新引⼊的异步 Main ⽅法,⽤来放置业务逻辑的 Work ⽅法同样是异步的。
调⽤异步⽅法时,可以直接使⽤ await 关键字,省去了我们之前在同步 Main ⽅法中做同样操作时附加的 .Wait() 甚⾄是 .ConfigureAwait(false).GetAwaiter().GetResult() 的繁琐。
预设的配置了 RollingFileAppender 和 ColoredConsoleAppender 两个 Appender,前者可以在⽇志⽂件中额外记录下机器名称、进程的名称和 ID,后者确保在跨平台环境下⽇志依然“出彩”。
整体的异常处理,针对 AggregateException 和 Exception 分别进⾏了捕捉和记录,并依此设置了 Exit Code。
Stopwatch 测量整体的运⾏时间并在最后⼀⾏⽇志中输出。
修改代码页以⽀持 UTF-8 字符正常显⽰,如果需要显⽰汉字,在⾮中⽂的 Windows 中还需要额外地将 cmd.exe 的默认字体设置为 MingLiU / 新细明体或其他CJK字体。
此外,⽆论是 .NET Core 还是 .NET Framework 版本的 csproj ⽂件都采⽤了 MSBuild 15.0 新引⼊的 project SDK 格式。
新的格式不仅更简单清爽,也带来了很多⽅便的特性,这⾥不再赘述。
相关需求解法
在模板的基础上,如果需要解析复杂的命令⾏参数,可以考虑引⼊ NuGet 包进⾏解析。
它的使⽤⽅法⾮常简单,GitHub 项⽬的⼀页便已阐述清楚,亦⽀持跨平台。
反之,如果仅仅想运⾏⼏⾏代码,⼜不愿等 Visual Studio 启动呢?可以⽤浏览器打开直接尝试,它不仅⽀持最新的 .NET Framework 4.7.2 版本,还可以选择 Roslyn 2.0,⽽且在 C# 之外⽀持 F# 和 。