.NET Core之非Visual Studio開發需知

  • 752
  • 0
  • 2018-04-23

Visual Studio幫你把所需工具都調整好了,讓你能方便得使用.NET Core來開發,那其它IDE該怎麼辨呢?

本文以JetBrains Rider為例來點出各個需要注意的地方

 

.NET Core的發佈,讓C#在非VS的IDE上撰寫、編譯變的更為方便。VS固然是俗稱地表最強IDE,但它有幾個問題點讓我想儘可能改用其它IDE

  • 慢 - 專案開啟後需要數十秒來載入,也可能是Plugin裝太多或裝了ReSharper的原因
  • 卡 - 時不時會因為還沒載入完,或在處理其它運算時整個卡住幾秒動彈不得
  • Lag - IntelliSense彈出速度相較JetBrain家的IDE慢了0.x秒
  • 爽 - 不用VS也能編C#程式就好像比較利害XD

回到正題。在寫.NET Core前,電腦的必需裝有.NET Core SDK,可以在.NET Download頁面下載

 

新增專案

Rider本身在剛安裝完成後就會有.NET Core的模板可以使用了,裡面一樣有MVC、Web API之類的選項。它在開專案時其實也只是幫你執行dotnet的cli(Command-line interface)指令來達成,像是開MVC專案的cli寫法就是dotnet new mvc

除了這幾個之外,.NET Core還有很多現呈的模板可以安裝使用,要安裝時並不是在IDE上新增,而是必需自己下cli指令,像是要新增NUnit模板時

dotnet new -i NUnit3.DotNetNew.Template

執行完成後,Rider就能找到此模板

 

偵錯執行

在偵錯時,VS相較下會好用一些,因為VS在啟動而不偵錯(Ctrl+F5)時是啟動一個IIS Express,這時一樣可以隨時改程式,並會在改動後的第一個Request時自動重新編譯,其效果就如同寫WebForm時不用每次按編譯的感覺一樣,是在寫.NET Core時的一個很方便的功能

而dotnet cli就沒辨法使用這功能,它就會像原本在寫.NET Framework MVC時,每改一次後需要手動重新編譯並執行。即便使用了dotnet watch run也只是在偵測到變更時先停止偵錯,待重新編譯後才再度啟動,若在編譯完成前重新載入偵錯中的頁面(ex: localhost:5000),則會如同沒啟動程式時一樣出現404,而不是像VS那樣會先把持著Request等它編譯完成再Response

如果有人知道更方便的作法的話,請再留言給我好讓大家知道

 

Rider預設不會在Exception時自動中斷並指到那一行,這時可以參考官方說明,把該功能啟用再重新進入Debug

或是使用相關的Breakpoints(Ctrl+Shfit+F8)以便在Debug時隨時切換啟用狀態

dotnet watch run

方便你每次儲存變更時不用重新開始偵錯,在Rider中可以新增External Tools並指定快捷鍵給它

dotnet watch run
C:\Program Files\dotnet\dotnet.exe
watch run
$FileParentDir$

 

發行編譯

Rider的Bulid選單中有一個Publish Solution選項,它編譯完產出的那些.dll、web.config會放至bin\Debug\netcoreapp2.0\publish資料夾。

也可以自己下cli來作發行,把cmd開到專案資料夾下執行

dotnet publish

發行完成後就可以把整個資料夾放至IIS Server上執行,至於如何在IIS上運行.NET Core請先讀完這篇較詳細文章或我寫的重點文章來安裝環境

若想測試執行效果,請先確保cmd目前的位置在該publish資料夾再執行cli指令,假設你的專案名稱為WebApplication1,那就是

dotnet WebApplication1.dll

如果沒有先移至該該資料夾便直接執行dotnet \bin\Debug\netcoreapp2.0\WebApplication1.dll的話,就會使得程式無法讀取到appsettings.json,導致像ConnectionStrings那類的設定值無法載入。你也可以自行在Program.cs中的BuildWebHost中間加上.UseContentRoot(Directory.GetCurrentDirectory()),並於傳入的參數中指定取得專案目錄的方法,只不過會有點麻煩就是了

 

結語

以上是近期我製作第一個.NET Core專案的經驗分享,以後再發現什麼值得分享的會在此篇、或另開文章來撰寫

若對文中有任何疑問也歡迎隨時提出,我會儘我所能的幫忙

 

關於Rider

JetBrains出版的一款.NET IDE,其功能繼承自VS的擴充元件 - ReSharper。它本身也是付費的IDE,不過只要有.edu的學校信箱就能用學術方案來免費使用他們所有的產品