超好用的C#控制檯應用模板

本文是Wei的公衆號投稿文章:


默認模板之缺

在工做學習中,咱們常常須要建立一些簡單的控制檯應用(Console App)去驗證某個想法,或者做爲小工具交付給其餘同事。html

一般咱們的選擇是 Visual Studio 自帶的 Console App 模板,這個經典模板只有預設好的 csproj 文件和空蕩蕩的 Main 方法,偶爾還會附送一行 Console.WriteLine("Hello World!");,除此以外沒有任何附加功能。html5

1

代碼看起來大概是這樣——git

using System;
namespace ConsoleApp1
{
    class Program
   {
        static void Main(string[] args)
       {
            Console.WriteLine("Hello World!");
       }
   }
}

面對這如同白紙同樣的模板,若是咱們須要捕捉一下異常、調用一下異步方法、記錄一下log呢?勤奮的你必定存有一些經常使用的經典代碼片斷和配置文件吧,那就一一複製進來唄……折騰了十來分鐘後,終於能夠開始寫代碼了……github

N天以後,又須要新寫個控制檯應用了,咱們再次重複一遍上述過程。apache

安裝模板插件

受到 HTML5 Boilerplate 的啓發,Visual Studio Marketplace 上也出現了一款叫作 C# Console App Boilerplate 的插件,顧名思義,就是在默認 Console App 模板基礎上添加經常使用特性以解決癢點。瀏覽器

能夠從 Visual Studio Marketplace 上直接下載 vsix 文件安裝:https://marketplace.visualstudio.com/items?itemName=vej.20181111異步

2

也能夠在 Visual Studio 2017 的 Extensions and Updates 中輸入 C# Console App Boilerplate 搜索並安裝:編輯器

3

安裝完成後,經過 Visual Studio 再次新建 Project 時,就能夠在 Visual C# 分類下找到 Console App Boilerplate 的兩個新模板。工具

4

模板便利特性

經過 Console App Boilerplate 模板新建 Project 後,咱們能夠看到編輯器窗口中默認打開的 Main.cs 文件——學習

5

咱們能夠直接運行樣例代碼,也能夠將 Work 方法中樣例代碼替換成咱們的業務邏輯。樣例代碼直接運行的效果以下——

6

一樣是控制檯應用,那麼它和經典的 Console App 模板究竟有何不一樣呢?咱們打開 Program.cs 文件即可知曉——

  • 使用了 C# 7.1 中新引入的異步 Main 方法,用來放置業務邏輯的 Work 方法一樣是異步的。調用異步方法時,能夠直接使用 await 關鍵字,省去了咱們以前在同步 Main 方法中作一樣操做時附加的 .Wait() 甚至是 .ConfigureAwait(false).GetAwaiter().GetResult() 的繁瑣。
  • 預設的 log4net 配置了 RollingFileAppenderColoredConsoleAppender 兩個 Appender,前者能夠在日誌文件中額外記錄下機器名稱、進程的名稱和 ID,後者確保在跨平臺環境下日誌依然「出彩」。
  • 總體的異常處理,針對 AggregateExceptionException 分別進行了捕捉和記錄,並依此設置了 Exit Code。
  • Stopwatch 測量總體的運行時間並在最後一行日誌中輸出。
  • 修改代碼頁以支持 UTF-8 字符正常顯示,若是須要顯示漢字,在非中文的 Windows 中還須要額外地將 cmd.exe 的默認字體設置爲 MingLiU / 新細明體 或其餘CJK字體。

此外,不管是 .NET Core 仍是 .NET Framework 版本的 csproj 文件都採用了 MSBuild 15.0 新引入的 project SDK 格式。新的格式不只更簡單清爽,也帶來了不少方便的特性,這裏再也不贅述。

相關需求解法

在模板的基礎上,若是須要解析複雜的命令行參數,能夠考慮引入 NuGet 包 CommandLine.Net 進行解析。它的使用方法很是簡單,GitHub 項目的一頁 README 便已闡述清楚,亦支持跨平臺。

反之,若是僅僅想運行幾行代碼,又不肯等 Visual Studio 啓動呢?能夠用瀏覽器打開 .NET Fiddle 直接嘗試,它不只支持最新的 .NET Framework 4.7.2 版本,還能夠選擇 Roslyn 2.0,並且在 C# 以外支持 F# 和 VB.NET。

7
相關文章
相關標籤/搜索