使用 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 这样的方式运行:例如:

命令带上 watch 的命令Command
dotnet rundotnet watch run
dotnet run -f net451dotnet watch run -f net451
dotnet run -f net451 -- --arg1dotnet watch run -f net451 -- --arg1
dotnet testdotnet 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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯JAVA---2013---B----世纪末的星期

2013 一、世纪末的星期 方法一 package com.kuang.Test; import java.util.Calendar; public class Test{ public static void main(String[] args) {Calendar calendar Calendar.getInstance(); //获取Calendar类的实例for(int year 1999; year < 10000; year 100) …

PL/SQL编程基本概念

/* pl/sql编程 */--pl/sql块的结构 declare --声明部门&#xff1a;在此声明pl/sql用到的变量、类型以及游标&#xff0c;以及局部的存储过程和函数 begin--执行部分&#xff1a;过程及sql语句&#xff0c;即程序的组成部分 exception --异常处理部分&#xff1a;错误处理 end;…

Vue.js2.0开发环境搭建(三)

转载自 Vue.js2.0从入门到放弃---入门实例&#xff08;三&#xff09;今天就来简单说一下vue-resource&#xff0c;这是vue的一个与服务器端通信的HTTP插件&#xff0c;用来从服务器端请求数据。话不多说&#xff0c;直接上干货吧。这里PS一下&#xff0c;有人反映之前的代码下…

controller如何保证当前只有一个线程执行_聊聊Spring线程安全,读完之后,大部分程序员收藏了......

Spring作为一个IOC/DI容器&#xff0c;帮助我们管理了许许多多的“bean”。但其实&#xff0c;Spring并没有保证这些对象的线程安全&#xff0c;需要由开发者自己编写解决线程安全问题的代码。Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例…

.NET Core 使用 grpc 实现微服务

GRPC 是Google发布的一个开源、高性能、通用RPC&#xff08;Remote Procedure Call&#xff09;框架。提供跨语言、跨平台支持。以下以一个.NET Core Console项目演示如何使用GRPC框架。 一、定义服务 通过proto定义一个数学计算服务&#xff0c;其中包括两个服务方法&#xff…

范式 第一 第二 第三范式

第一范式&#xff08;每个数据项不可分&#xff09; 如果一个关系模式R的所有属性都是不可分的基本数据项&#xff0c;则R∈1NF&#xff08;即R符合第一范式&#xff09;。 第二范式 &#xff08;没有部分依赖&#xff09; 若关系模式R∈1NF&#xff08;即R符合第一范式&a…

Vue.js2.0开发环境搭建(四)

转载自 vuejs2.0从入门到放弃--入门实例&#xff08;四&#xff09;最近&#xff0c;很多小伙伴有疑惑&#xff0c;想学vuejs必须先了解复杂的构建工具和命令行操作吗&#xff01;&#xff01;答案是否定的&#xff01; 对于很多做前端的同学&#xff0c;涉及到命令行和构建工…

微信小程序父级之间的传值_微信小程序自定义组件封装及父子间组件传值的方法...

首先在我们可以直接写到需要的 page 中&#xff0c;然后再进行抽取组件&#xff0c;自定义组件建议wxzx-xxx命名例如&#xff0c;我们封装的组件名为 **wxzx-loadmorewxzx-loadmore.wxml正在加载{{tip}}这里就是把index.wxml中的需要封装成组件的代码原样copy过来wxzx-loadmore…

[公测]微信小程序设计指南文档

微信小程序开放了。不要在意名额&#xff0c;一定要加大专注度。并保持良好的想法以及意识&#xff0c;扩大认知范围&#xff0c;这样才能占得先机。程序上的事我不懂&#xff0c;设计文档还是有必要看一看。文档并没有讲如何更漂亮。只是从人性化的角度去讲&#xff0c;如何让…

多线程----join插队

package com.kuang.demo05; public class TestJoin implements Runnable {Overridepublic void run() {for (int i 0; i <10 ; i) {System.out.println("VIP线程来插队了&#xff01;&#xff01;&#xff01;"i);}}public static void main(String[] args) thro…

联通 培训 c班还 20190814

看我的ppt是没有很多文字的 文字都在心里 电脑比较旧 可以装一个Linux 还能用 还是装xp把 电脑旧可以在咸鱼上买一个ssd&#xff0c;还能用很久。 Linux 目录每个用户都一样 不可以修改 ps -ef | sudo service sudo 授权 一般都是普通用户 docker 启动就类似模拟…

Vue开源项目库汇总

转载自 Vue开源项目库汇总最近做了一个Vue开源项目库汇总&#xff0c;里面集合了OpenDigg 上的优质的Vue开源项目库&#xff0c;方便移动开发人员便捷的找到自己需要的项目工具等&#xff0c;感兴趣的可以到GitHub上给个star。 UI组件 element ★9305 - 饿了么出品的Vue2的web…

PL/SQL经典练习

/* PL/SQL编程*/--先把scott里面的表弄到test表空间里面来 CREATE TABLE EMP ASSELECT * FROM SCOTT.EMP; CREATE TABLE DEPT ASSELECT * FROM SCOTT.DEPT; /* 上机1 */ --&#xff08;1&#xff09;计算King所交税金DECLARE V_SHUIJIN NUMBER; --应交税金V_SA…

alertmanager 告警恢复_Prometheus配置企业微信告警

kubernetes operator安装的&#xff0c;如果不会可看上一篇文章前提&#xff1a;创建企业微信&#xff0c;创建应用然后配置altermanager.yamlglobal:resolve_timeout: 5m receivers: - name: wechatwechat_configs:- agent_id: "100000x"api_secret: Nm7PRrxxxxG8Ep…

IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API。 使用IdentityServer4 来实现使用客户端凭据保护ASP.NET Core Web API 访问。 IdentityServer4 GitHub: https://github.com/IdentityServer/IdentityServer4 IdentityServer 框架支持以下功能&…

JAVA多线程总结(笔记)

线程的特点 线程就是独立的执行路径&#xff1b;在线程运行时&#xff0c;即使没有自己创建线程&#xff0c;后台也会有多个线程&#xff0c;如主线程&#xff0c;gc线程&#xff1b;main()称之为主线程&#xff0c;为系统的入口&#xff0c;用于执行整个程序&#xff1b;在一…

很有道理的内容

男生选女朋友最看重的是什么? 病毒营销陈轩 被赞同30万&#xff0c;被收藏24万&#xff0c;顶级病毒营销专家&#xff0c;加个人微信送书 12,540 人也赞同了该回答 有女孩给我发私信&#xff1a; “我是个很好的女孩&#xff0c;漂亮身材好&#xff0c;白领一枚&#xff0c…

学python后做什么工作好_学习完Python课程后可以做什么工作?

Python作为人工智能、大数据的首选编程语言&#xff0c;也是进入编程世界的理想选择&#xff0c;已经成为了大家都在追求学习的语言&#xff0c;那么学习Python之后到底可以做什么呢?为您详细的介绍一下。什么是Python?Python是一种面向对象解释型计算机程序设计语言。而且Py…

vue-beauty 的v-data-table数据单元不换行

原因由于css样式 .ant-table-tbody>tr>td, .ant-table-thead>tr>th {padding: 16px 8px;word-break: keep-all;white-space: nowrap; /*强制不换行*/ } 只需覆盖white-space的值就可以 如&#xff1a; .ant-table-tbody>tr>td {white-space:normal } 补…

用Middleware给ASP.NET Core Web API添加自己的授权验证

Web API&#xff0c;是一个能让前后端分离、解放前后端生产力的好东西。不过大部分公司应该都没能做到完全的前后端分离。API的实现方式有很 多&#xff0c;可以用ASP.NET Core、也可以用ASP.NET Web API、ASP.NET MVC、NancyFx等。说到Web API&#xff0c;不同的人有不同的做法…