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


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


默認模板之缺

在工作學習中,我們經常需要創建一些簡單的控制台應用(Console App)去驗證某個想法,或者作為小工具交付給其他同事。

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

1

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

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

面對這如同白紙一樣的模板,如果我們需要捕捉一下異常、調用一下異步方法、記錄一下log呢?勤奮的你一定存有一些常用的經典代碼片段和配置文件吧,那就一一復制進來唄……折騰了十來分鍾后,終於可以開始寫代碼了……

N天之后,又需要新寫個控制台應用了,我們再次重復一遍上述過程。

安裝模板插件

受到 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM