ASP.NET开发中修改代码而不重启网站
我们在做网站开发的时候,通常是写好了一个功能就要进行测试,Visual Studio上点“Start Debugging”(快捷键是F5),这是调试模式,也有直接运行模式,“Start Without Debugging”(快捷键是Ctrl+F5),网站启动,并且默认会打开一个浏览器窗口让你看到结果,假如这个时候你发现点问题,需要调整代码……
对于非*.cs文件
如果是cshtml、aspx、ashx或asmx这类非C#文件(*.cs),不管是调试模式还是非调试模式,直接点保存,就生效了,网站一刷新页面,第一次访问到它们,它们就会自动被编译,重新生成可执行代码。
对于*.cs文件(调试模式下)
如果你尝试在调试中修改cs文件,会得到这么一个错误提示:

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

如果没开启这个选项的话,你在调试中可以继续编辑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开发中修改代码而不重启网站的更多相关文章
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证
ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...
- asp.net开发中常见公共捕获异常方式总结(附源码)
本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...
- win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件
win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...
- asp.net5开发中DNX SDK版本的影响
某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图: 但是编译时出现了几百个错误: 错误基本都是形如“CS0246 The type or namespa ...
- Android开发中使用代码删除数据库
更多信息参考:Android开发中使用代码删除数据库 在Android开发中,如果用到数据库,就会有一个很麻烦的问题,就是有时候需要删除数据库很麻烦,要打开Android Device Monitor ...
- 企业开发中选择logback而不是log4j的理由
不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因 ...
- ASP.NET WebForm中前台代码如何绑定后台变量
转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...
- STS热部署,springboot项目中修改代码不用重新启动服务
方法如下: 1.在pom文件中引入 devtools 依赖: <dependency> <groupId>org.springframework.boot</grou ...
随机推荐
- Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)
在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工 ...
- 数据结构 之 二叉堆(Heap)
注:本节主要讨论最大堆(最小堆同理). 一.堆的概念 堆,又称二叉堆.同二叉查找树一样,堆也有两个性质,即结构性和堆序性. 1.结构性质: 堆是一棵被完全填满的二叉树,有可能的 ...
- Java判断字符串是否为数字的自定义方法
//方法一:用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ ...
- 阿里云oss挂载到linux本地文件系统
对象存储 OSS 阿里云对象存储服务 (OSS) 是一种高度可伸缩且安全可靠的云对象存储服务,让您可以存储.备份和归档大量数据.阿里云 OSS 是一种简单易用的服务,让您每秒能处理数百万请求,它还支持 ...
- 深入理解HashMap上篇
前言: HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型.随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化, ...
- app后端设计(2)--xmpp的使用(2014.01.14更新)
在app中有时候是需要添加聊天服务,在这里谈谈曾经开发聊天服务的经验: (1)聊天服务端选的openfire,这是一个基于xmpp协议的聊天服务器(XMPP是一种基于XML的协议,它继承了在XML环境 ...
- 使用nginx搭建https服务器
http://www.cnblogs.com/tintin1926/archive/2012/07/12/2587311.html 最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输 ...
- windows部署SpiderKeeper(爬虫监控)
最近发现了一个spdierkeeper的库,这个库的主要用途是在于配合这scrpyd管理你的爬虫,支持一键式部署,定时采集任务,启动,暂停等一系列的操作.简单来说将scrapyd的api进行封装,最大 ...
- Spring Cloud 多版本管理那些事。
好久没有研究 Spring Cloud 了,也没有关注它的更新及新特性,上官网看了下,又增加了几个版本,有正式版有预览版,多达 6 个版本,实在让人蒙逼. 而我们的项目版本还仪停留在 Dalston ...
- DOM常见操作
一.查找 1.直接查找 document.getElementById 根据ID获取一个标签 document.getElementsByName 根据name属性 ...