使用 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 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?這樣的方式運行:例如:
| 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?中修復了錯誤你會看到控制臺輸出顯示如下信息,否則你會看到測試失敗的信息:
一旦所有的測試運行起來了,監控器會指示他在下一次重新啟動?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...
原文地址:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-2_8-dotnet-watch.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的使用 dotnet watch 开发 ASP.NET Core 应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Debugging into .NET
- 下一篇: .NET Core 使用 grpc 实现