VS.Net中程序集的Debug版本和Release版本的区别

原创 2004年08月16日 11:30:00

前几天看到豆腐的文章介绍如何知道程序集是Debug版还是Release版,之前只知道某些软件从功能上有企业版、标准版之分,却从不知道.Net程序集还有Debug和Release之区别,真是惭愧学了这一年C#。然后在博客园的提问区发文求教,两天过去竟无人问津(还是自己太懒,要检讨),只好自己翻MSDN、用Google搜,现在总算有点明白了。

关于Debug和Release,MSDN里面是这么说的:

Visual Studio 项目对程序的发布和调试版本分别有单独的配置。顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发。
如果在 Visual Studio 中创建程序,Visual Studio 将自动创建这些配置并设置适当的默认选项和其他设置。在默认设置下: 
程序的“调试”配置用全部符号调试信息编译,不进行优化。(优化会使调试复杂化,因为源代码和生成的指令间的关系更加复杂。)
程序的“发布”配置被完全优化,不包含任何符号调试信息。调试信息可在单独的 PDB 文件中生成。

当在程序集的属性页中选Debug模式时,设置如下:

当选择Release模式时,设置如下:

两者的不同点如下:

项目 Debug Release
条件编译常数 Debug;Trace Trace
优化代码 False True
输出路径 bin/Debug bin/Release
生成调试信息 True False

Debug模式下生成的程序集为调试版本,未经优化;在bin/debug/目录中有两个文件,除了要生成的.exe或.dll文件外,还有个.pdb文件,这个.pdb文件中就记录了代码中的断点等调试信息;Release模式下不包含调试信息,并对代码进行了优化,/bin/release/目录下只有一个.exe或.dll文件。

注意若要更改项目的生成模式,不能只从项目属性页上点“配置”下拉框更改,那样不起作用,必须点右上角的“配置管理器”按钮才能更改。

现在我还有个疑问:在项目文件夹下除了bin外,还有个obj目录,里面也有debug和release两个子目录,这不知是做什么用的。

Feedback

# re: VS.Net中程序集的Debug版本和Release版本的区别

2004-08-15 03:23 by 爱上写程序
编译是分模块编译的,每个模块的编译结果就保存在了OBJ目录下。最后会合并为一个exe或者dll文件保存到bin之中。因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个OBJ的目录的作用就是保存这些小块的编译结果,加快编译速度。

# re: VS.Net中程序集的Debug版本和Release版本的区别

2004-08-15 09:51 by wayfarer
学习!

看来没人回答提问也有他的好处。自己解决的印象应该比别人帮助的深刻吧。

# re: VS.Net中程序集的Debug版本和Release版本的区别

2004-08-15 12:32 by cowbird
学习,收藏

# re: VS.Net中程序集的Debug版本和Release版本的区别

2004-08-15 14:11 by alva
从来没有想过这个问题,又学到了新东西。

# re: VS.Net中程序集的Debug版本和Release版本的区别

2004-08-15 14:55 by 寒枫天伤
可以采用release模式,发布为正式版本,在release模式下,建议不要采用增量编译的模式,尽管增量编译可以大大提高编译速度,尤其是针对大项目时。但.net中增量编译的技术是否像C++那样拥有足够的成熟度,目前不敢下断言。
因为在vs.net2002,有时会出现一些莫名其妙的问题,遇到这类情况时,把obj文件中的内容全部删除后,再重新编译,就可以恢复。

以前遇到过几次这种情况,郁闷。

obj目录的作用,“爱上写程序 ”的说法比较中肯。

VS.Net中程序集的Debug版本和Release版本的区别

Visual Studio 项目对程序的发布和调试版本分别有单独的配置。顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发。    如果在 Visual Studio ...
  • jjkliu
  • jjkliu
  • 2014年04月09日 11:30
  • 1445

VC中debug和release版本的区别

vc中debug和release的不同 收藏  在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是...
  • hegeneral
  • hegeneral
  • 2016年04月27日 20:15
  • 2210

VS环境下Debug和Release版本的区别

说一点闲话我在大学刚刚学习编程的时候,对于Debug和Release这两个词只是处于知道的水平,并没有深入了解。因为大学时期的编程更多的是为了实现,而不是使用。所以部署这个词,在大学时和我没有任何瓜葛...
  • Lionel_Coder
  • Lionel_Coder
  • 2016年07月14日 21:49
  • 3074

VS.Net中程序集的Debug版本和Release版本的区别

前几天看到豆腐的文章介绍如何知道程序集是Debug版还是Release版,之前只知道某些软件从功能上有企业版、标准版之分,却从不知道.Net程序集还有Debug和Release之区别,真是惭愧学了这一...
  • zhuiyang1986
  • zhuiyang1986
  • 2011年04月14日 23:27
  • 499

VS.Net中程序集的Debug版本和Release版本的区别

VS.Net中程序集的Debug版本和Release版本的区别 转载地址:http://blog.sina.com.cn/s/blog_7d283bbb0101bi4i.html ...
  • ennaymonkey
  • ennaymonkey
  • 2017年12月20日 16:27
  • 32

vs中debug和release版本的区别

vs中的程序有debug和release两个版本,Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。而Rel...
  • gxiaob
  • gxiaob
  • 2013年06月07日 22:16
  • 41757

vs中debug和release版本的区别

vs中的程序有debug和release两个版本,Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。而Rel...
  • scutjy2015
  • scutjy2015
  • 2017年06月14日 15:45
  • 292

VS Debug与Release版本的区别

Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和 Release的行为完全颠倒过来。...
  • debugconsole
  • debugconsole
  • 2013年01月15日 14:37
  • 2727

vs201中debug和release两个版本的区别

主要参考:http://javafans.iteye.com/blog/609937/ http://blog.csdn.net/gxiaob/article/details/9045085 ...
  • songyimin1208
  • songyimin1208
  • 2015年09月29日 20:08
  • 380

vs中debug和release版本的区别

vs中的程序有debug和release两个版本,Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。而Rel...
  • zhangliu1982
  • zhangliu1982
  • 2014年04月02日 16:03
  • 641
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS.Net中程序集的Debug版本和Release版本的区别
举报原因:
原因补充:

(最多只允许输入30个字)