列出當下環境可以使用的 .NET Core 專案範本

.NET Core 問世以來,跨平台的特性帶來了許多的改變,其中一個就是開發模式,過去 .Net 開發人員只能透過 Visual Studio 這類的 IDE 工具進行開發,但跨平台之後使用 IDE 不一定是所有開發人員的首選,畢竟單論執行效率上 IDE 難免還是有些延遲,加上 Linux 環境也不一定有 GUI 介面可以使用,綜合以上原因,身為一個熟悉 Visual Studio 的開發人員也得試著上手相關指令

過去想要得知道有什麼專案範本,最直接快速的方法就是打開 Visual Studio ,立馬一目了然,但如果沒有辦法使用 Visual Studio 時該如何是好呢?!因此我的第一個 .NET Core 專案就卡住了XD 所以今天就來紀錄一下如何列出所有當下環境中可以使用的 .NET Core 專案範本

環境說明

  • .NET Core SDK 版本 :2.1.403

    使用 dotnet --version 可以取得 .NET Core SDK 版本

    1version

  • OS 環境:Windows 10 1803 (OS Build 17134.254)

列出現有可使用專案範本

  1. SDK 預設安裝範本

    2.1.403 為例

    • dotnet new -l 或是 dotnet new --list ,兩者行為相同

      • 名稱顯示差異: 範本描述 是 microsoft Docs 上的顯示名稱,在 console 會顯示 Templates; 範本名稱 在 console 上為 Short Name
      • 支援語言標示:有使用 [] 標記的為該範本預設使用的語言
      • 文件與實際行為不同:僅會列出指定資料夾可用的專案範本,但實際上仍會列所有專案範本

      3listerror

      範本描述範本名稱支援語言Tags
      Console Applicationconsole[C#], F#, VBCommon/Console
      Class libraryclasslib[C#], F#, VBCommon/Library
      Unit Test Projectmstest[C#], F#, VBTest/MSTest
      NUnit 3 Test Projectnunit[C#], F#, VBTest/NUnit
      NUnit 3 Test Itemnunit-test[C#], F#, VBTest/NUnit
      xUnit Test Projectxunit[C#], F#, VBTest/xUnit
      Razor Pagepage[C#]Web/ASP.NET
      MVC ViewImportsviewimports[C#]Web/ASP.NET
      MVC ViewStartviewstart[C#]Web/ASP.NET
      ASP.NET Core Emptyweb[C#], F#Web/Empty
      ASP.NET Core Web App (Model-View-Controller)mvc[C#], F#Web/MVC
      ASP.NET Core Web Apprazor[C#]Web/MVC/Razor Pages
      ASP.NET Core with Angularangular[C#]Web/MVC/SPA
      ASP.NET Core with React.jsreact[C#]Web/MVC/SPA
      ASP.NET Core with React.js and Reduxreactredux[C#]Web/MVC/SPA
      Razor Class Libraryrazorclasslib[C#]Web/Razor/Library/Razor Class Library
      ASP.NET Core Web APIwebapi[C#], F#Web/WebAPI
      global.json fileglobaljsonConfig
      NuGet ConfignugetconfigConfig
      Web ConfigwebconfigConfig
      Solution FileslnSolution

      2newlist

  2. 過濾指定語言

    • dotnet new -l -lang {C#|F#|VB} 或是 dotnet new -l --language {C#|F#|VB} ,兩者行為相同
    • 實測指令在 Windows 環境下 (cmd 與 powershell) 都不需使用 "" 將語言包住,可以正確解析 #
    • 指定空白串,會直接列出所有專案範本而不是沒有語言類型 (solution 、config…) 這類範本

    4lang

  3. 過濾指定類型

    • dotnet new -l --type {project|item|other}

      • dotnet new -l --type project

        範本描述範本名稱支援語言Tags
        Console Applicationconsole[C#], F#, VBCommon/Console
        Class libraryclasslib[C#], F#, VBCommon/Library
        Unit Test Projectmstest[C#], F#, VBTest/MSTest
        NUnit 3 Test Projectnunit[C#], F#, VBTest/NUnit
        xUnit Test Projectxunit[C#], F#, VBTest/xUnit
        ASP.NET Core Emptyweb[C#], F#Web/Empty
        ASP.NET Core Web App (Model-View-Controller)mvc[C#], F#Web/MVC
        ASP.NET Core Web Apprazor[C#]Web/MVC/Razor Pages
        ASP.NET Core with Angularangular[C#]Web/MVC/SPA
        ASP.NET Core with React.jsreact[C#]Web/MVC/SPA
        ASP.NET Core with React.js and Reduxreactredux[C#]Web/MVC/SPA
        Razor Class Libraryrazorclasslib[C#]Web/Razor/Library/Razor Class ASP.NET Core Web API
        Solution FileslnSolution

        5project

      • dotnet new -l --type item

        範本描述範本名稱支援語言Tags
        NUnit 3 Test Itemnunit-test[C#], F#, VBTest/NUnit
        Razor Pagepage[C#]Web/ASP.NET
        MVC ViewImportsviewimports[C#]Web/ASP.NET
        MVC ViewStartviewstart[C#]Web/ASP.NET
        global.json fileglobaljsonConfig
        NuGet ConfignugetconfigConfig
        Web ConfigwebconfigConfig
        Solution FileslnSolution

        6item

      • dotnet new -l --type other

        範本描述範本名稱支援語言Tags
        Solution FileslnSolution

        7other

  4. 混合過濾語言及類型

    • dotnet new -l --type {project|item|other} -lang {c#|vb|f#}

      8projectlang

  5. 列出某個 template 名稱下的所有 template

    • dotnet new {template name} -l

      9templatelist

  6. 未符合 template 名稱時自動模糊比對

    • dotnet new {not a template name} -l

      10partialmatch

心得

.NET Core CLI 指令的即時回饋比起 IDE 確實快了許多,加上有了跨平台的優勢,相信 .NET Core CLI 必然會更加普及也會更佳完善

目前使用上並沒有遇到什麼大問題,但難免 wording 使用上還有改善空間,另外就是實際行為與文件不相符的問題,但這些小狀況都瑕不掩瑜,整體上還是相當值得推薦使用

參考資訊

  1. dotnet new