在工做學習中,咱們常常須要建立一些簡單的控制檯應用(Console App)去驗證某個想法,或者做爲小工具交付給其餘同事。html
一般咱們的選擇是 Visual Studio 自帶的 Console App 模板,這個經典模板只有預設好的 csproj 文件和空蕩蕩的 Main
方法,偶爾還會附送一行 Console.WriteLine("Hello World!");
,除此以外沒有任何附加功能。html5
代碼看起來大概是這樣——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異步
也能夠在 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 文件即可知曉——
Main
方法,用來放置業務邏輯的 Work
方法一樣是異步的。調用異步方法時,能夠直接使用 await
關鍵字,省去了咱們以前在同步 Main
方法中作一樣操做時附加的 .Wait()
甚至是 .ConfigureAwait(false).GetAwaiter().GetResult()
的繁瑣。 AggregateException
和 Exception
分別進行了捕捉和記錄,並依此設置了 Exit Code。 Stopwatch
測量總體的運行時間並在最後一行日誌中輸出。 此外,不管是 .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。