`

C# 项目中的 bin 目录和 obj 目录的区别,以及 Debug 版本和 Release 版本的区别

阅读更多
1.关于 bin 目录和 obj 目录

bin 目录用来保存项目生成后程序集,它有 Debug 和 Release 两个版本,分别对应的文件夹为 bin/Debug 和 bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。

obj 目录是用来保存每个模块的编译结果,在 .NET 中,编译是分模块进行的,编译整个完成后会合并为一个 .DLL 或 .EXE 保存到 bin 目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj 保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。

2.“是否复制到本地”的设置问题

在添加引用时,.NET 会记录添加的引用绝对路径,这些设置保存在“每用户”文件中,(Solution.csproj.user),可以通过记事本打开查看。也可以在:项目属性—>通用属性—>引用路径里面查看。如果设置复制到本地为 true,在生成项目时会自动拷贝该 DLL 到项目生成文件夹中(bin 目录),否则不会拷贝。在生成项目时,对所添加的引用的是绝对路径,而在运行时程序集默认只在当前所在的路径下去找。要修改引用的路径,必须通过编程的方法去实现。使用 References 对象。

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

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

Debug

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

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 文件(也可能有 .pdb 文件,程序调试数据库 (PDB) 文件保存着调试和项目状态信息。千一网络编辑注)。

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





  • 大小: 45.4 KB
  • 大小: 45.1 KB
分享到:
评论

相关推荐

    解决VS2010无法将obj目录下文件复制到bin目录问题

    而`bin`目录则是最终的输出目录,包含了可执行文件、库文件以及项目配置中指定需要复制的其他文件。 当VS2010无法将`obj`目录下的文件复制到`bin`目录时,可能有以下几种原因: 1. **文件被占用**:这是最常见的...

    VS项目属性的一些配置项的总结.pdf

    C#项目的目录结构更为规整,bin目录下区分debug和release,而C++项目直接在解决方案目录下有Debug和Release目录,分别存放最终生成的可执行文件。 3. **项目属性与系统配置变量** - **输出目录**:默认设置为`$...

    分组分号点名器,C# winform ,含exe免安装软件和项目源码

    - bin/Debug或bin/Release:编译后的可执行文件和相关依赖。 - obj:编译过程中的中间文件。 总的来说,这个分组分号点名器是一个C# WinForm应用,适合学习C#和Windows桌面应用开发的人群,同时也为有特定点名需求...

    c#进销存源码

    5. **编译和构建相关**:“Model\obj\Release\TempPE”是C#项目编译过程中生成的临时文件,它们在编译完成后一般会被清理,但这里被保留可能是为了方便调试或分析。 6. **图片和表情**:“web\eWebEditor\SysImage\...

    支付宝 网页授权 获取用户信息Demo(C#)

    `obj`和`bin`目录则分别存储编译过程中生成的临时文件和编译后的可执行文件或DLL。 在具体实现过程中,DEMO会用到支付宝的SDK,这个SDK提供了封装好的API接口,用于简化与支付宝服务器的通信。例如,`...

    基于策略的公交网络配流问题,C#源代码

    5. **bin**:这个目录存放的是编译后的可执行文件和相关的库文件,通常是按照不同的配置(如Debug或Release)划分的。 6. **obj**:这个目录包含编译过程中产生的中间文件,如编译后的类文件、元数据以及资源文件等...

    AutoCode.zip

    bin目录下的Debug或Release子目录会包含编译后的AutoCode.exe,而obj目录则存储编译过程中的中间文件。 6. **Properties** 文件夹:包含项目的属性设置,如版权信息、版本号等。 使用AutoCode,开发者可以轻松地将...

    TestConsoleApp.zip

    在开发环境中,通常会包含调试(Debug)和发布(Release)两种配置的输出。 综合以上信息,我们可以推断"TestConsoleApp.zip" 提供了一个C#的控制台应用示例,该应用使用了一个自定义的日志类库,能够方便地在控制...

    WindowsFormsApp3.rar

    5. **Bin** 和 **obj** 目录:编译后产生的可执行文件(.exe)和中间语言(IL)文件通常位于bin目录下,而编译过程中的临时文件则存储在obj目录。 6. **App.config**:应用程序配置文件,用于存储应用程序特定的...

    单机播放器全源码

    bin目录下的Debug或Release子目录会包含编译后的程序,而obj目录则包含编译过程中的临时文件。 7. **html** 文件:可能是播放器用于显示帮助信息或者关于页面的HTML文档。 通过这个项目,初学者可以深入学习C#编程...

    图书馆信息管理系统.zip

    bin目录下的Debug或Release子目录会有最终的运行程序,而obj目录则保存了编译过程中生成的临时文件。 这个项目对于初学者来说是一个很好的实践平台,涵盖了C#语言基础、Windows Forms UI设计、数据库操作等多个方面...

    一套抓数据小程序(客户资料、实时新闻、股票数据)源码_8b76a821-4dd9-46b4-8e9c-0be18a8d75e6.zip

    5. **项目结构**:"GrabDataTest(20130107)"目录可能是一个.NET项目,包含了编译前后的文件,如"bin"和"obj"目录下的Debug与Release版本,这表明源码支持不同的编译配置。 6. **版本控制**:文件名中的日期...

    VS发布webservice,访问其他odbc获取数据库数据

    `obj`和`bin`目录是编译过程中生成的中间文件和输出文件。`obj`目录存储编译器生成的临时文件,如编译后的类库和元数据。`bin`目录则包含编译后的可执行文件和相关依赖。 在实际操作中,开发者首先需要在服务器上...

    一个仿QQ截图的代码

    `DllTest\obj\x86\Release\ResGen.write.1.tlog` 和 `DllTest\obj\x86\Release\ResGen.read.1.tlog`:这些文件是Visual Studio生成的资源编译器(ResGen.exe)的日志文件,用于跟踪资源文件的编译过程,表明项目包含...

    Socket通信demo

    `bin`和`obj`目录通常包含了编译后的可执行文件和中间编译产物。`Debug`和`Release`子目录区分了调试和发布模式的编译结果。`Refactor`可能是重构过程中产生的临时文件。`16Aspx源码必读.txt`可能是一份关于ASP.NET...

    validator1.zip

    4. **Validator1\obj\Release/\* 和 obj\Debug/\*.dll**:这些是编译过程中产生的中间文件和不同配置(Release和Debug)下的程序集,用于运行或调试。 5. **Validator1\bin\Release\Validator1.dll**:这是编译后的...

    Winapp webservices 服务器端源码

    3. **bin**目录:存放编译后的可执行文件和依赖库,包括Web Service的ASMX或WSDL文件以及相关的DLL文件。 4. **packages.config**:这是一个XML文件,记录了项目所依赖的NuGet包及其版本,用于在构建时自动下载和...

    项目组:testproj

    2. **bin**:编译后的可执行文件和库文件会被放置在此目录下,根据不同的构建配置(如Debug或Release),可能会有多个子目录。 3. **obj**:编译期间的中间文件,如编译器生成的临时文件和元数据。 4. **packages**...

    PDF在线阅读器PdfViewer.dll

    "PdfViewer\PdfViewer\obj"目录下的"Release"和"Debug"子目录,存储了编译过程中产生的临时文件和编译配置相关的信息,例如"TempPE"。"PdfTestSite\Bin"目录通常存放了网站运行所需的外部库,"App_Data"则可能包含...

Global site tag (gtag.js) - Google Analytics