关于bin和obj文件夹。

楼主hcaihao(影子男孩)2002-05-29 20:04:24 在 .NET技术 / C# 提问

VS.Net会生成bin和obj文件夹以及它们下面的Debug和Release文件夹共4个,谁能告诉我分别有什吗作用? 问题点数:0、回复次数:4Top

 


bin是放最终代码的目录  
  obj就放中间代码的目录  
   
  release和debug是不同的运行方式  

  debug会增加调试代码,方便调试。调试完后,用release版本发布,没有调试代码,减小程序体积,加快执行速度!Top


既然obj就放中间代码的目录,为什吗还要release呢?同理,既然bin是放最终代码的目录还要debug干什吗?不是多此一举吗?Top


哎!  
  一、先说说   编译:  

    编译一个源程序文件,要经过

语法、类型,甚至要判断执行时的可行性等。  
   
是一个对文件多次扫描的过程,最后还有代码优化的过程。会有一大堆的中间文件产生。vc6下的一个mfc项目   obj目录里会有好几M的中间(临时)文件。  
 
再复杂点,一个project有图片(声音)等资源文件,要调用其他DLL类库(可能是.net组件,可能是com),还可能由多个.cs文件组成。要把
这么多东西连接在一起。以前在DOS下用C或PASCAL,要先编译成.obj文件,再用link.exe连接在一起,才是一个exe文件。(记得
pascal还是fortran要用两个编译程序才能得到一个.obj的中间文件)  
    结论:编译需要大量的中间文件存放临时结果,为下一步做准备。C#是面向对象的复杂度更高!obj目录就是用来存放临时文件的!  
   

  二、debug   &   release  
 
debug调试,你在程序中设置了断点,为什么vs.net知道在那里要停下来,当你把鼠标移到某个变量上,vs.net就会显示它当时的值?  
   
因为编译器在代码中添加了许多调试需要的代码,可以让vs.net得到,返回给你。  
    这些代码当然是要占用空间和时间的,在你的程序调试完了后,可以正确运行了。完全可以去掉这些代码,这时候就应该用Release模式了。  

   
  不管Debug还是Release模式,都要编译,都有中间临时代码产生,所以obj目录下有debug  
release目录。两种模式编译的结果,就放在bin目录下。  
  编译完后,中间临时代码是没什么用的了,所以一般不管obj目录里的东西!  

   
  各位说说,我是不是可以去写书了?   :)

关于bin和obj文件夹。debug 和release的区别(转)的更多相关文章

  1. C#快速删除bin和obj文件夹的方法

    C#程序总会生成bin和obj文件夹,为了减小源码的大小,就有必要将这两个文件夹删除,于是想到用批处理文件来删除. 以下是批处理的代码: @echo offset nowPath=%cd%cd /cd ...

  2. C++工程文件夹中的bin和obj文件夹有何用处?(补充多文件结构)

    博主在使用Code::Blocks创建一个工程之后,正准备新建一个头文件,细心的博主发现,在工程文件夹中有两个子文件夹,分别是bin和obj.好奇心驱使下,想知道这两个文件夹用来干嘛的,网上搜了下,整 ...

  3. Visual Studio Debug和Release的区别及obj的作用

    一.Debug和Release的区别      1.Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂), ...

  4. 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别

    相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...

  5. C++中debug和release的区别 . 转载

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

  6. Debug和Release版本区别

    Debug和Release版本区别 众所周知,我们尽心iOS开发,在Xocde调试程序时,分为两种方式Debug和Release,在Target的Setting中相信大家应该能看到很多选项分别为Deb ...

  7. POPTEST老李谈Debug和Release的区别(c#)

    POPTEST老李谈Debug和Release的区别(c#)   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  8. POPTEST老李谈Debug和Release的区别(c#) 1

    POPTEST老李谈Debug和Release的区别(c#)   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  9. 关于c# Debug和Release的区别 (转)

    关于Debug和Release的区别之讨论本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release ...

随机推荐

  1. Android Platform Version与API Level的对应表

    Platform Version API Level VERSION_CODE Notes Android 6.0 23 M Platform Highlights Android 5.1 22 LO ...

  2. WebSocket使用教程 - 带完整实例--网址:https://my.oschina.net/u/1266171/blog/357488

    什么是WebSocket?看过html5的同学都知道,WebSocket protocol 是HTML5一种新的协议.它是实现了浏览器与服务器全双工通信(full-duplex).HTML5定义了We ...

  3. 【opencv】opencv在图片、视频嵌中英文字符的方法

    转自:http://www.cnblogs.com/hujingshuang/p/5119015.html 说明:本博文是根据前人已有的成果并结合自己的理解而成的.为了避免让读者感到繁琐,我将运用小学 ...

  4. 「 LuoguT37042」 求子序列个数

    Description 给定序列 A, 求出 A 中本质不同的子序列 (包含空的子序列) 个数模 10^9+ 7 的结果. 一个序列 B 是 A 的子序列需要满足 A 删掉某些元素后能够得到 B. 两 ...

  5. bzoj1097

    最短路+状压dp 肯定是状压dp 那么我们把k个点的单源最短路预处理出来,然后dp[i][j]表示状态为i,当前在j需要走的最短距离,给定的限制用状态压一下就行了 注意特判k=0的情况 #includ ...

  6. E20180422-hm

    tint n. 浅色; 色彩,色泽; 气息,迹象,痕迹 vt. 染色; 着色于…; 染(发) introduce vt. 介绍; 引进; 提出; 作为…的开头; variation  n. 变化,变动 ...

  7. CodeForces 615C

    题意: 给定两个字符串s1,s2利用s1去构造s2,s1有无限个,可以翻转,你最少要用几个s1才能构造s2.输出每一次使用的s1的有效区间. 伪思路: 据说是暴力就能过的题目.然而自己就是暴力差,模拟 ...

  8. K8S学习心得 == kube-controller-manager 报错configmaps "extension-apiserver-authentication" is forbidden: User "kubernetes" cannot get resource "configmaps" in API group ""

    当我按照教材设置证书,配置好kube-controller的相关条件后,启动kube-controller-manage组件,却意外报错. 一.基本信息如下: 1. kube-controller-m ...

  9. noi.ac 邀请赛1 By cellur925

    A. array 考场:上来就想暴力,首先第一个子任务肯定没问题,怎么搞都行.然后第二个子任务用个数组记下新修的值就行了.第三个子任务用一下等差数列求和公式帮助求解,每次都重新算(因为每次改变全部元素 ...

  10. 安装 synaptic on ubuntu 18

    apt的图形化界面管理 sudo apt install synaptic 安装后使用需要注意的是 如果打开了synaptic,终端中apt命令某些是没法正常用的,比如说apt remove,应该是锁 ...