#if DEBUG 和 if (env.IsDevelopment()) 的用法区别
咨询区
webwake:
我发现预处理指令 #if DEBUG
和 Asp.NET Core环境变量名
都可以用于区分 debug/development
和 release/production
下的不同行为,请问他们都有哪些合适的应用场景?比如说某些场景下应该使用 预处理指令
而不是 环境变量
?
使用
#if DEBUG
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{#if DEBUGapp.UseDeveloperExceptionPage();app.UseBrowserLink();#elseapp.UseExceptionHandler("/Error");#endif
}
使用
env.IsDevelopment()
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseBrowserLink();}else{app.UseExceptionHandler("/Error");}
}
回答区
Ron Beyer:
预处理指令是带有条件式的编译行为,比如下面的例子。
#if DEBUG//Do something
#endif
一旦你设置了 DEBUG
符号,那么 #if
语句中的代码将会被编译器检查和编译,此外在IDE中预处理指令
都是灰色显示的。
if (env.IsDevelopment())
{//Do something
}
上面的代码在 release/debug
环境下都可以被编译,往复杂的说,上面的代码会有两个副作用。
程序执行代码更慢
程序的文件更大
总的来说,它更关注的是程序所处的执行环境,和程序的编译方式无关,同时要注意不要在生产环境下跑开发或者测试环境代码,你有可能会泄漏商业机密以及其他重要的信息。
点评区
我个人感觉他们的核心差异在于。
预处理指令:关注的是程序的内部环境。(debug 还是 release)
环境变量: 关注的是程序的外部环境。(测试环境 还是 生产环境)
#if DEBUG 和 if (env.IsDevelopment()) 的用法区别相关推荐
- jquery中this与$(this)的用法区别.
2019独角兽企业重金招聘Python工程师标准>>> jquery中this与$(this)的用法区别.先看以下代码: $("#textbox").hover( ...
- c语言中 char怎样用,C语言中char*和char[]用法区别分析
C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...
- Java中PreparedStatement和Statement的用法区别
Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈 1. PreparedStatement接口继承Sta ...
- toString()与new String ()用法区别
toString()与new String ()用法区别 TestString.java package com.atguigu;import com.sun.org.apache.xerces.in ...
- mysql id in set_mysql数据库中find_in_set()和in()用法区别
mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...
- jsp 中forward 和 Redirect 的用法区别
jsp中跳转的用法和区别 区别 用法 forward的用法 redirect的用法 区别 首先我们要知道的是forward是转发,地址用的是原地址,但是内容变为设置转向地址的内容. redirect ...
- thinkphp5中的系统文件上传和$_FILES用法区别
thinkphp5中的系统文件上传和$_FILES用法区别 $aa=request()->file('file');$bb=$aa->getInfo(); 后面的file是文件的名字 $b ...
- php super和parent,parent()、parents()的用法区别
parent():所有匹配元素的父元素的组合 parents():所有匹配元素的祖先元素(包括父元素)的组合 关键代码如下: 第1层DIV 第2层DIV 第3层DIV bbb $(function() ...
- php 静态方法特点,浅析php静态方法与非静态方法的用法区别
在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制 ...
最新文章
- 第五章:面向对象(上)
- 利用JavaScript中的原型给对像添加方法
- 关于ORACLEOraDb11g_home1TNSListener服务启动后又停止问题的关键点
- 3DSlicer3:模块管理(一)颜色、DCM、数据、模型、注释
- 【MySQL】在Windows下更改datadir
- tomcat的连接数与线程池
- sql批量删除和条件查询
- JAVA内存释放机制
- SOA面向服务架构简述
- 数据持久化,序列化,反序列化,文件读写1
- Jenkins下载插件,报java.net.SocketTimeoutException: Read timed out
- 计算几何与计算机图形必备书单整理
- 遇害的中国留美博士生,被追授博士学位!导师帮他完成了学业!
- Oracle获取两时间的相差天数
- 三國演義與三國志兩部文本的導讀概要2019年5月11日
- HTML的表格边框的合并
- X264实现H264编码以及MediaMuxer的另类用法「第八章,Android音视频编码那点破事」
- c语言offset函数,offset偏移量 offset函数怎么用,详细一点…
- STC 51单片机53——电子指南针HMC5883l
- EBCDIC、ASCII与EBCDIC的关系及相互转化