使用 dotnet watch 開發 ASP.NET Core 應用程式

來源:互聯網
上載者:User

標籤:

 使用 dotnet watch 開發 ASP.NET Core 應用程式

原文:Developing ASP.NET Core applications using dotnet watch
Victor Hurdugaci
翻譯:謝煬(Kiler)
校對:劉怡(AlexLEWIS)、許登洋(Seay)

 介紹

dotnet watch 是一個開發階段在源檔案發生變動的情況下使用 dotnet 命令的工具。 當代碼發生變動的時候可以用來執行編譯,運行測試,或者發佈動作。

在本教程中,我們將使用一個現有的計算兩個數字之和以及乘積的 WebApi 應用程式來示範如何使用 dotnet watch 。應用程式範例故意包含一個錯誤,作為本教程的一部分我們會修複它。

 開始入門

開始下載 樣本程式。樣本程式包含兩個項目, WebApp (Web 應用程式)以及 WebAppTests (Web 應用程式配套的單元測試項目)

在命令列控制台中,進入下載樣本程式的目錄並且運行下述命令:

1、dotnet restore
2、cd WebApp
3、dotnet run

控制台輸出將顯示如下資訊,表明該應用程式正在運行並等待請求:

複製代碼
$ dotnet runProject WebApp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modifiedCompiling WebApp for .NETCoreApp,Version=v1.0Compilation succeeded.  0 Warning(s)  0 Error(s)Time elapsed 00:00:02.6049991Hosting environment: ProductionContent root path: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebAppNow listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.
 

在 網頁瀏覽器中,導航到 http://localhost:5000/api/math/sum?a=4&b=5 頁面你會看到結果 9 。

如果你導航到 http://localhost:5000/api/math/product?a=4&b=5 頁面,你期望得到結果 20。但是實際上還是返回了 9 。

我們會修複這個問題的。

 項目中添加  dotnet watch

1、按照下面例子的方式在 WebApp/project.json 檔案的 tools 配置節中添加 Microsoft.DotNet.Watcher.Tools 引用:

複製代碼
"tools": {  "Microsoft.DotNet.Watcher.Tools": "1.0.0-preview2-final" //手工高亮},
 

2、運行 dotnet restore

控制台輸出將顯示如下資訊:

複製代碼
log  : Restoring packages for /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp/project.json...log  : Restoring packages for tool ‘Microsoft.DotNet.Watcher.Tools‘ in /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp/project.json...log  : Installing Microsoft.DotNet.Watcher.Core 1.0.0-preview2-final.log  : Installing Microsoft.DotNet.Watcher.Tools 1.0.0-preview2-final.
  使用  dotnet watch 運行  dotnet 命令

任何與 dotnet 有關的命令都可以以 dotnet watch 這樣的方式運行:例如:

命令 帶上 watch 的命令Command
dotnet run dotnet watch run
dotnet run -f net451 dotnet watch run -f net451
dotnet run -f net451 -- --arg1 dotnet watch run -f net451 -- --arg1
dotnet test dotnet watch test

為了讓 WebApp 在 watcher 模式下運行,在 WebApp 目錄裡面運行 dotnet watch run 命令。 控制台輸出將顯示如下資訊,表明 dotnet watch 現在正在監控代碼檔案:

複製代碼
user$ dotnet watch run[DotNetWatcher] info: Running dotnet with the following arguments: run[DotNetWatcher] info: dotnet process id: 39746Project WebApp (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.Hosting environment: ProductionContent root path: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebAppNow listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.
  在  dotnet watch 模式進行修改

確認 dotnet watch 模式運行中。

讓我們來修複上面發現的那個兩個數相乘結果錯誤。

開啟檔案 WebApp/Controllers/MathController.cs。

我們故意在代碼中引入了錯誤。

複製代碼
public static int Product(int a, int b){    // We have an intentional bug here    // + should be *    return a + b;//手工高亮}
 

通過把代碼 a + b 替換為 a * b 修複錯誤。

儲存檔案。 控制台輸出將顯示如下資訊,表明 dotnet watch 檢測到檔案的改變並重啟了應用程式。

複製代碼
[DotNetWatcher] info: File changed: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp/Controllers/MathController.cs[DotNetWatcher] info: Running dotnet with the following arguments: run[DotNetWatcher] info: dotnet process id: 39940Project WebApp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modifiedCompiling WebApp for .NETCoreApp,Version=v1.0Compilation succeeded.  0 Warning(s)  0 Error(s)Time elapsed 00:00:03.3312829Hosting environment: ProductionContent root path: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebAppNow listening on: http://localhost:5000Application started. Press Ctrl+C to shut down.
 

驗證 http://localhost:5000/api/math/product?a=4&b=5 連結返回正確的結果。

 使用  dotnet watch 運行測試

檔案監控也能運行其他 dotnet 命令例如 test 或者 publish

1、開啟 WebAppTests 目錄,確認 project.json 檔案中已經包含了 dotnet watch

2、運行 dotnet watch test 命令。

如果你之前在 MathController 中修複了錯誤你會看到控制台輸出顯示如下資訊,否則你會看到測試失敗的資訊:

複製代碼
WebAppTests user$ dotnet watch test[DotNetWatcher] info: Running dotnet with the following arguments: test[DotNetWatcher] info: dotnet process id: 40193Project WebApp (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.Project WebAppTests (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.xUnit.net .NET CLI test runner (64-bit .NET Core osx.10.11-x64)  Discovering: WebAppTests  Discovered:  WebAppTests  Starting:    WebAppTests  Finished:    WebAppTests=== TEST EXECUTION SUMMARY ===   WebAppTests  Total: 2, Errors: 0, Failed: 0, Skipped: 0, Time: 0.259sSUMMARY: Total: 1 targets, Passed: 1, Failed: 0.[DotNetWatcher] info: dotnet exit code: 0[DotNetWatcher] info: Waiting for a file to change before restarting dotnet...
 

一旦所有的測試回合起來了,監控器會指示他在下一次重新啟動 dotnet test 前會等待一個檔案的變更。

3、開啟控制器 WebApp/Controllers/MathController.cs 檔案並且修改代碼。如果你沒有修複乘法錯誤,馬上修改。並儲存。

dotnet watch 將會檢測到檔案變更並且重新運行測試。 控制台輸出將顯示如下資訊:

複製代碼
[DotNetWatcher] info: File changed: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp/Controllers/MathController.cs[DotNetWatcher] info: Running dotnet with the following arguments: test[DotNetWatcher] info: dotnet process id: 40233Project WebApp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modifiedCompiling WebApp for .NETCoreApp,Version=v1.0Compilation succeeded.  0 Warning(s)  0 Error(s)Time elapsed 00:00:03.2127590Project WebAppTests (.NETCoreApp,Version=v1.0) will be compiled because dependencies changedCompiling WebAppTests for .NETCoreApp,Version=v1.0Compilation succeeded.  0 Warning(s)  0 Error(s)Time elapsed 00:00:02.1204052xUnit.net .NET CLI test runner (64-bit .NET Core osx.10.11-x64)  Discovering: WebAppTests  Discovered:  WebAppTests  Starting:    WebAppTests  Finished:    WebAppTests=== TEST EXECUTION SUMMARY ===   WebAppTests  Total: 2, Errors: 0, Failed: 0, Skipped: 0, Time: 0.260sSUMMARY: Total: 1 targets, Passed: 1, Failed: 0.[DotNetWatcher] info: dotnet exit code: 0[DotNetWatcher] info: Waiting for a file to change before restarting dotnet...
 

返回目錄

使用 dotnet watch 開發 ASP.NET Core 應用程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.