咨询区

  • webwake

我发现预处理指令 #if DEBUGAsp.NET Core环境变量名 都可以用于区分 debug/developmentrelease/production 下的不同行为,请问他们都有哪些合适的应用场景?比如说某些场景下应该使用 预处理指令 而不是 环境变量

  1. 使用 #if DEBUG


public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{#if DEBUGapp.UseDeveloperExceptionPage();app.UseBrowserLink();#elseapp.UseExceptionHandler("/Error");#endif
}
  1. 使用 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()) 的用法区别相关推荐

  1. jquery中this与$(this)的用法区别.

    2019独角兽企业重金招聘Python工程师标准>>> jquery中this与$(this)的用法区别.先看以下代码: $("#textbox").hover( ...

  2. c语言中 char怎样用,C语言中char*和char[]用法区别分析

    C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...

  3. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  4. toString()与new String ()用法区别

    toString()与new String ()用法区别 TestString.java package com.atguigu;import com.sun.org.apache.xerces.in ...

  5. 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 ...

  6. jsp 中forward 和 Redirect 的用法区别

    jsp中跳转的用法和区别 区别 用法 forward的用法 redirect的用法 区别 首先我们要知道的是forward是转发,地址用的是原地址,但是内容变为设置转向地址的内容. redirect ...

  7. thinkphp5中的系统文件上传和$_FILES用法区别

    thinkphp5中的系统文件上传和$_FILES用法区别 $aa=request()->file('file');$bb=$aa->getInfo(); 后面的file是文件的名字 $b ...

  8. php super和parent,parent()、parents()的用法区别

    parent():所有匹配元素的父元素的组合 parents():所有匹配元素的祖先元素(包括父元素)的组合 关键代码如下: 第1层DIV 第2层DIV 第3层DIV bbb $(function() ...

  9. php 静态方法特点,浅析php静态方法与非静态方法的用法区别

    在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制 ...

最新文章

  1. 第五章:面向对象(上)
  2. 利用JavaScript中的原型给对像添加方法
  3. 关于ORACLEOraDb11g_home1TNSListener服务启动后又停止问题的关键点
  4. 3DSlicer3:模块管理(一)颜色、DCM、数据、模型、注释
  5. 【MySQL】在Windows下更改datadir
  6. tomcat的连接数与线程池
  7. sql批量删除和条件查询
  8. JAVA内存释放机制
  9. SOA面向服务架构简述
  10. 数据持久化,序列化,反序列化,文件读写1
  11. Jenkins下载插件,报java.net.SocketTimeoutException: Read timed out
  12. 计算几何与计算机图形必备书单整理
  13. 遇害的中国留美博士生,被追授博士学位!导师帮他完成了学业!
  14. Oracle获取两时间的相差天数
  15. 三國演義與三國志兩部文本的導讀概要2019年5月11日
  16. HTML的表格边框的合并
  17. X264实现H264编码以及MediaMuxer的另类用法「第八章,Android音视频编码那点破事」
  18. c语言offset函数,offset偏移量 offset函数怎么用,详细一点…
  19. STC 51单片机53——电子指南针HMC5883l
  20. EBCDIC、ASCII与EBCDIC的关系及相互转化

热门文章

  1. 用字符串表达式访问JSON数据(java,fastjson)
  2. JAVA编程经验汇总 (载)
  3. LoadRunner Interview Questions
  4. pythonista3安装stash_Pythonista下stash安装教程
  5. 定制jQuery File Upload为微博式单文件上传
  6. ajax 页面无刷新
  7. HttpRunner自动化框架学习笔记
  8. jQuary的相关动画效果
  9. 粒子系统(一):从零开始画一颗树
  10. Codeforces Round #359 div2