<DIR>          bin
 <DIR>          obj
 <DIR>          Properties
我的应用程序下一般有这三个目录,都是干什么用的?
另外,bin和obj下都有debug,也都有生成的exe文件,他们有什麽区别,发布时用哪个?

解决方案 »

  1.   

    bin存放最终的二进制文件,obj存放中间的目标文件。Debug包含调试信息,Release不包含调试信息。
    发布时,自然是用不包含调试信息的。
    BTW:obj下应该是没有exe文件的。
      

  2.   


    Debug包含调试信息,Release不包含调试信息。这句话中
    release,是指哪个目录?
    另外,我的obj下有应用程序。下面是我的bin,和obj的目录结构
    in\bin\Debug 的目录 <DIR>          .
     <DIR>          ..
             14,336 DataBase.dll
             46,592 DataBase.pdb
             34,304 stockin.exe
             40,448 stockin.pdb
             14,328 stockin.vshost.exe
                490 stockin.vshost.exe.manifest
             13,312 Tools.dll
             30,208 Tools.pdb
              5,632 visitdatabase.dll
             13,824 visitdatabase.pdb
    文件        213,474 字节in\obj\Debug 的目录 <DIR>          .
     <DIR>          ..
            409,600 Interop.Microsoft.Office.Core.dll
     <DIR>          Refactor
             20,106 ResolveAssemblyReference.cache
                798 stockin.csproj.FileListAbsolute.txt
                905 stockin.csproj.GenerateResource.Cache
                810 stockin.csproj.ResolveComReference.cache
             34,304 stockin.exe
              3,796 stockin.Form1.resources
             40,448 stockin.pdb
                180 stockin.Properties.Resources.resources
     <DIR>          TempPE
    文件        510,947 字节
      

  3.   

    Release 是执行时选择Release才有的。绿色三角那选择
      

  4.   

    Properties 
    一般放资源文件,签名,版本信息
      

  5.   

    exe应用程序文件是在bin目录下的
      

  6.   

    obj目录下也包括一个Debug文件,里面也有exe应用程序文件的啊。
      

  7.   

    是呀,我不明白他和 bin 下的debug的区别
      

  8.   


    谢谢,
    我好像要明白了,那debug的呢?
      

  9.   

    obj是产生bin里的内容之前所使用的临时文件夹。也就是在obj生成之后将部分制作好的文件拷贝到bin里边,但是obj中的并不删除。vs环境并不对临时目录“擦屁股”,而是下一次使用文件夹时才预先擦一下。   
        
      你调试程序的时候每一次启动之前vs都要首先将程序编译好,然后才能执行。这个编译过程在   obj中做临时目录,其结果就拷贝到bin中,并从这里开始执行exe供你调试。用于开始调试程序的目录包括所有的exe、引用的dll、其它运行时你的程序需要读取的任何文件。   
        
      因此,如果你的程序在运行时需要在本地读取一些独立的资源文件,例如一个图标,那么你工程中的资源文件的属性应该修改为“每次都复制到输出目录”才能正确调试。   
        
      “能用作什么”?只有调试时vs环境自己使用,你不应该为它操心。   
        
      其实你应该使用正常的“发布”功能去将程序发布到单独的目录里,不要去到bin或者obj目录里去见什么垃圾文件。
      

  10.   

    1.关于bin目录和obj目录Bin目录用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。
      

  11.   

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