使用 dotnet watch 开发 ASP.NET Core 应用程序
作者 Rick Anderson 、 Victor Hurdugaci
翻译 谢炀(Kiler)
dotnet watch
是一个开发阶段在源文件发生变动的情况下使用 dotnet
命令的工具。 当代码发生变动的时候可以用来执行编译,运行测试,或者发布操作。
在本教程中,我们将使用一个现有的计算两个数字之和以及乘积的 WebApi 应用程序。示例应用程序故意包含一个错误,作为本教程的一部分我们会修复它。
开始下载 示例应用程序。示例程序包含两个项目, WebApp
(Web 应用程序)以及 WebAppTests
(Web 应用程序配套的单元测试项目)
在命令行控制台中,进入下载示例程序的目录并且运行下述命令:
dotnet restore
dotnet run
控制台输出将显示如下信息,表明该应用程序正在运行并等待请求:
$ dotnet run
Hosting environment: Production
Content root path: C:/Docs/aspnetcore/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
。
如果你导航到乘法API页面 (http://localhost:5000/api/math/product?a=4&b=5
) 页面,你期望得到结果 20
。但是实际上还是返回了 9
,我们稍后会修复这个问题 。
在项目中添加 dotnet watch
添加
Microsoft.DotNet.Watcher.Tools
到 .csproj 文件:<ItemGroup> <DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0" /> </ItemGroup>
运行
dotnet restore
。
以 dotnet watch
的方式运行 dotnet
命令
任何与 dotnet
有关的命令都可以以 dotnet watch
这样的方式运行:例如:
命令 | 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
目录里面运行 dotnet watch run
。 控制台输出将显示如下信息,表明 watch
(监控工作)已经开始了。
在 dotnet watch
模式修改代码
确认 dotnet watch
模式运行中。
修复 MathController
中的 Product
方法的 bug ,让它返回乘积结果而不是总和。
public static int Product(int a, int b)
{
return a * b;
}
保存文件。 控制台输出将显示如下信息,表明 dotnet watch
检测到文件的改变并重启了应用程序。
验证 http://localhost:5000/api/math/product?a=4&b=5
链接返回正确的结果。
使用 dotnet watch
运行测试
- 修改
MathController
中的Product
方法回到之前的返回总和结果并且保存文件。 - 在 windows 命令窗口,导航到
WebAppTests
目录。 - 运行
dotnet restore
运行
dotnet watch test
。你会看到输出显示测试失败并且监控器在等待文件改变:Total tests: 2. Passed: 1. Failed: 1. Skipped: 0. Test Run Failed.
- 修复
Product
方法代码让他返回乘积结果。保存文件。
dotnet watch
侦测到文件改变并且返回测试。 命令行输出显示测试通过。
dotnet-watch GitHub 开源代码
dotnet-watch 是做为 GitHub 上的 DotNetTools repository 开源项目中的一部分。
dotnet-watch 说明 中的 MSBuild 章节 中详细解释了如何把 dotnet-watch 配置到 MSBuild 项目文件中来监控文件的变化。 dotnet-watch 说明 一文包含了所有本教程没有提到的 dotnet-watch 信息。