ASP.NET Core 中文文檔 第二章 指南(8) 使用 dotnet watch 開發 ASP.NET Core 應用程序


本文已更新,最后更新於2017年4月27日

原文:Developing ASP.NET Core apps using dotnet watch
譯文:使用 dotnet watch 開發 ASP.NET Core 應用程序
翻譯:謝煬(Kiler)劉怡(AlexLEWIS)

聯系我們:
QQ Group: 436035237 (dotNet Core Studying Group)
GitHub Repo: https://github.com/dotnetcore/aspnetcore-doc-cn/


以下為老翻譯存檔


原文: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 run
Project WebApp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modified
Compiling WebApp for .NETCoreApp,Version=v1.0

Compilation succeeded.
  0 Warning(s)
  0 Error(s)

Time elapsed 00:00:02.6049991

Hosting environment: Production
Content root path: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

在 Web 瀏覽器中,導航到 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: 39746
Project WebApp (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp
Now listening on: http://localhost:5000
Application 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: 39940
Project WebApp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modified
Compiling WebApp for .NETCoreApp,Version=v1.0
Compilation succeeded.
  0 Warning(s)
  0 Error(s)
Time elapsed 00:00:03.3312829

Hosting environment: Production
Content root path: /Users/user/dev/aspnet/Docs/aspnet/tutorials/dotnet-watch/sample/WebApp
Now listening on: http://localhost:5000
Application 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: 40193
Project 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.259s
SUMMARY: 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: 40233
Project WebApp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modified
Compiling WebApp for .NETCoreApp,Version=v1.0
Compilation succeeded.
  0 Warning(s)
  0 Error(s)
Time elapsed 00:00:03.2127590
Project WebAppTests (.NETCoreApp,Version=v1.0) will be compiled because dependencies changed
Compiling WebAppTests for .NETCoreApp,Version=v1.0
Compilation succeeded.
  0 Warning(s)
  0 Error(s)
Time elapsed 00:00:02.1204052

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.260s
SUMMARY: Total: 1 targets, Passed: 1, Failed: 0.
[DotNetWatcher] info: dotnet exit code: 0
[DotNetWatcher] info: Waiting for a file to change before restarting dotnet...

返回目錄


免責聲明!

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



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