ASP.NET开发中修改代码而不重启网站

时间:2021-07-14 21:20:42

我们在做网站开发的时候,通常是写好了一个功能就要进行测试,Visual Studio上点“Start Debugging”(快捷键是F5),这是调试模式,也有直接运行模式,“Start Without Debugging”(快捷键是Ctrl+F5),网站启动,并且默认会打开一个浏览器窗口让你看到结果,假如这个时候你发现点问题,需要调整代码……

对于非*.cs文件

如果是cshtml、aspx、ashx或asmx这类非C#文件(*.cs),不管是调试模式还是非调试模式,直接点保存,就生效了,网站一刷新页面,第一次访问到它们,它们就会自动被编译,重新生成可执行代码。

对于*.cs文件(调试模式下)

如果你尝试在调试中修改cs文件,会得到这么一个错误提示:

ASP.NET开发中修改代码而不重启网站

你得先把程序暂停了,才能对它进行修改,暂停的办法有两种,一种是断点,程序跑到断点处就自动暂停了,另一种是直接点“Break All”(快捷键是Ctrl+Alt+Break),暂停了程序,就可以对cs文件进行修改了,修改好之后,点一下“Continue”(快捷键F5),就生效了,神奇的是:你甚至不需要点保存。

当然了,这还得有个前提,就是你的Visual Studio开启了这个选项:

ASP.NET开发中修改代码而不重启网站

如果没开启这个选项的话,你在调试中可以继续编辑C#代码,可以保存,但不会生效。

对于*.cs文件(非调试模式下)

你可以直接修改cs文件,没有任何问题,保存,看看是否起作用?——答案是否。因为承载着你的程序的容器——IIS Express并不知道你修改了源代码,你需要重新编译一下,点一下“Build Solution”(快捷键F7),然后就生效了。当然对非ASP.NET程序来说,这招行不通,因为程序运行时,EXE文件是写保护的,这跟ASP.NET程序的运行原理不一样。

希望通过这几种方式,能够提高大家的网站开发效率。

使用dotnet watch

对于.NET Core程序来说,还有另外一种方法,就是使用“Microsoft.DotNet.Watcher.Tools”工具。在项目的csproj中加入这么一行:

<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />

接下来在项目的目录下(也就是csproj所在的目录下),执行一次dotnet restore(这个不用每次都执行),然后执行dotnet watch run。程序就跑起来了。

接下来你对C#代码的修改都会被Watcher观察到,并自动编译你的代码和重启你的程序,这个过程不需要你额外自己去Build和Run,当然你程序如果有错,它也会显示出来Build失败,失败的话不会重启程序,继续跑着旧版。

由于需要打开命令行界面,所以总感觉有点麻烦,速度嘛,相比前面提起的手动Build Solution,好像也快不去哪里。用不用自己看。

ASP.NET开发中修改代码而不重启网站的更多相关文章

  1. C&num;中&quest;&quest;和?分别是什么意思? 在ASP&period;NET开发中一些单词的标准缩写 C&num;SESSION丢失问题的解决办法 在C&num;中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中&excl;&equals;、&equals;&equals;、&excl;&equals;&equals;、&equals;&equals;&equals;的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  2. ASP&period;NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

  3. asp&period;net开发中常见公共捕获异常方式总结&lpar;附源码&rpar;

    本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...

  4. win7&comma;vs2010&comma;asp&period;net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...

  5. asp&period;net5开发中DNX SDK版本的影响

    某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图: 但是编译时出现了几百个错误: 错误基本都是形如“CS0246 The type or namespa ...

  6. Android开发中使用代码删除数据库

    更多信息参考:Android开发中使用代码删除数据库 在Android开发中,如果用到数据库,就会有一个很麻烦的问题,就是有时候需要删除数据库很麻烦,要打开Android Device Monitor ...

  7. 企业开发中选择logback而不是log4j的理由

    不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因 ...

  8. ASP&period;NET WebForm中前台代码如何绑定后台变量

    转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...

  9. STS热部署,springboot项目中修改代码不用重新启动服务

    方法如下: 1.在pom文件中引入  devtools  依赖: <dependency> <groupId>org.springframework.boot</grou ...

随机推荐

  1. php文件以二进制形式上传并放入到数据库中

    conn.php: <?php $id=mysql_connect('localhost','root','root'); mysql_select_db("db_database12 ...

  2. LINQ标准查询操作符(二)——Join、GroupJoin、GroupBy、Concat、

    四.联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作.这两个数据源对象通过一个共同的值或者属性进行关联. LINQ有两个联接操作符:Join和GroupJoin. 1. J ...

  3. Java导出Excel和CSV&lpar;简单Demo&rpar;

    Java导出Excel和CSV的简单实现,分别使用POI和JavaCSV. JavaBean public class ReportInfo { int id; String date; int nu ...

  4. Threejs基础学习【修改版】

    一. Three.js官网及使用Three.js必备的三个条件 1.Three.js 官网 https://threejs.org/ 2.使用Three.js必备的三个条件(To actually b ...

  5. WPF 圖表控件 MetroChart

    Torsten Mandelkow MetroChart包括以下: ColumnChart(ClusteredColumnChart,StackedColumnChart,StackedColumnC ...

  6. MySQL聚集索引和非聚集索引

    索引分为聚集索引和非聚集索引,mysql中不同的存储引擎对索引的底层实现可能会不同,这里只关注mysql的默认存储引擎InnoDB. 利用下面的命令可以查看默认的存储引擎 show variables ...

  7. Lucky 7 &lpar;容斥原理 &plus; 中国剩余定理&rpar;

    题意:求满足7的倍数,不满足其他条件num % p == a 的num的个数. 思路:利用中国剩余定理我i们可以求出7的倍数,但是多算了不满足约定条件又得减去一个,但是又发现多减了,又得加回来.如此, ...

  8. MVC model验证 获取验证错误信息

    public static class ModelStateExtensions { /// <summary> /// 获取model验证错误信息 /// </summary&gt ...

  9. org&period;apache&period;hadoop&period;hbase&period;MasterNotRunningException解决策略

    执行HBase时常会遇到个错误,我就有这种经历. ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 检 ...

  10. python-day32--进程---&gt&semi;socker并发

    一.进程背景 1.进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 2.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有 ...