【译】使用 dotnet watch 开发 ASP.NET Core 应用
介绍
dotnet watch
是一个开发阶段在源文件发生变动的情况下使用 dotnet
命令的工具。 当代码发生变动的时候可以用来执行编译,运行测试,或者发布操作。
在本教程中,我们将使用一个现有的计算两个数字之和以及乘积的 WebApi 应用程序来演示如何使用 dotnet watch
。示例应用程序故意包含一个错误,作为本教程的一部分我们会修复它。
开始入门
开始下载 示例程序。示例程序包含两个项目, WebApp
(Web 应用程序)以及 WebAppTests
(Web 应用程序配套的单元测试项目)
在命令行控制台中,进入下载示例程序的目录并且运行下述命令:
1、dotnet restore
2、cd WebApp
3、dotnet run
控制台输出将显示如下信息,表明该应用程序正在运行并等待请求:
$ dotnet run
Hosting environment: Development
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
。
如果你导航到 http://localhost:5000/api/math/product?a=4&b=5
页面,你期望得到结果 20
。但是实际上还是返回了 9
。
我们会修复这个问题的。
项目中添加 dotnet watch
1、按照下面例子的方式在 WebApp/project.json 文件的 tools
配置节中添加 Microsoft.DotNet.Watcher.Tools
引用:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
</ItemGroup>
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 netcoreapp2.0 |
dotnet watch run -f netcoreapp2.0 |
dotnet run -f netcoreapp2.0-- --arg1 |
dotnet watch run -f netcoreapp2.0-- --arg1 |
dotnet test |
dotnet watch test |
为了让 WebApp
在 watcher 模式下运行,在 WebApp
目录里面运行 dotnet watch run
命令。 控制台便会监控代码文件变化。
在 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
修复错误。
保存文件,验证 http://localhost:5000/api/math/product?a=4&b=5
链接返回正确的结果。
使用 dotnet watch
运行测试
1、打开文件 WebApp/Controllers/MathController.cs。撤销原先的修改并保存文件。
2、导航到WebAppTests目录
3、运行dotnet restore
命令
4、运行dotnet watch test
, 控制台输出将显示如下信息:
Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.
Test Run Failed.
修改代码,并保存文件。
dotnet watch
将会检测到文件变更并且重新运行测试。
查看英文原文:Developing ASP.NET Core apps using dotnet watch
- Java工具类- 跨域工具类
- python语言中的AOP利器:装饰器
- 如何使用supervisor管理你的应用
- Manjaro安装配置
- [Golang软件推荐] Frp内网穿透
- [Golang软件推荐] Golang通用连接池
- RxJS -- Subscription
- ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.
- RxJS速成 (下)
- RxJS速成 (上)
- Typescript 查缺补漏
- Git -- Stash
- Git -- Rebase
- Git -- 分支与合并 (命令行+可视化工具p4merge) Fast Forward 合并禁用 Fast Forward 合并自动合并解决合并的冲突
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux下删除乱码或特殊字符文件的方法讲解
- Ubuntu Server下无线网卡的配置详解
- Linux中修改mysql默认编码的方法步骤
- ubuntu16.04搭建nfs服务的方法
- Ubuntu16.04搭建php5.6Web服务器环境
- Linux上通过SSH挂载远程文件系统方法详解
- Linux上创建、列出、删除Docker容器方法总结
- Centos 7.4服务器时间同步配置方法【基于NTP服务】
- PowerBI 通用万能日历模板,想干嘛就干嘛
- Linux持续集成自动化安装Maven的方法
- 在CentOS上安装搭建PHP+Apache+Mysql的服务器环境
- Centos7.4服务器安装apache及安装过程出现的问题解决方法
- ubuntu系统修改时区和时间的方法
- CentOS7 LNMP+phpmyadmin环境搭建 第一篇虚拟机及centos7安装
- flutter 输入框组件TextField的实现代码