概述.net开发过程中Bin目录下面几种文件格式
在.net开发中,我们经常会在bin目录下面看到这些类型的文件:
.pdb、.xsd、.vshost.exe、.exe、.exe.config、.vshost.exe.config
项目发布的时候,往往搞不清楚哪些是需要的,那些是不需要的。那么这些格式的文件到底是干什么用的呢?
pdb
.pdb文件,是vs生成的用于调试的符号文件(program database),保存着调试的信息。在vs的工程属性,c/c++,调试信息格式,设置/zi,那么vs就会在构建项目时创建pdb文件。
在这里要区分两种情况:
1、构建静态库时,可以在工程属性 –> c/c++ –> 输出文件 –> 程序数据库名 设置生成的pdb文件名称,如果不指定,默认是生成为vcx0.pdb,这里x是vs版本号,例如用vs2005,就会生成vc80.pdb。这里就会产 生一个疑问,编译静态库时默认生成的.pdb文件名字都一样,那引用这个静态库的项目最后能找到正确的.pdb文件吗?答案是肯定的,因为vs会在生成的 文件中嵌入 .pdb 文件的路径。
举个例子,在project/toola下,构建了一个静态库toola.lib,对应生成一个vc80.pdb,同样在在project /toolb下,构建了一个静态库toolb.lib,对应生成一个vc80.pdb。然后最终的工程work.exe同时链接了这两个静态库.这时,生 成work.pdb的时候,就会在toola.lib中找到它对应的符号文件路径project/toola/vc80.pdb,以及toolb.lib 对应的符号文件路径project/toolb/vc80.pdb,合并生成最终工程的work.pdb。
2、构建可执行文件或动态库,这种情况下,编译器会生成一个.pdb文件,链接器会生成一个.pdb文件,编译器生成的pdb文件可以在在工程属 性 –> c/c++ –> 输出文件 –> 程序数据库名 设置,链接器生成的.pdb文件可以在工程属性 –> 链接器 –> 调试 –> 生成调试信息(设置yes),生成程序数据库名设 置。
这两个pdb文件有什么不一样呢?编译器生成的pdb文件,默认也是用vcx0命名,是编译器在编译过程中,把每个.obj文件对应的符号信息存储在其中的,但不包括函数定义。而链接器生成的.pdb文件,默认使用工程名命名,是链接器在链接工程时,根据编译器生成的vcx0.pdb再进一步加工出 来的,具有完整信息的符号文件。就像链接器根据各个.obj文件生成exe或dll一样,编译器生成的.pdb文件是编译-链接过程的中间产物,最后用于 调试程序的是链接器生成的projectname.pdb.
上面说的是pdb文件生成规则。在使用的时候,调时期会取到文件对应的pdb文件路径,然后去那个路径(绝对路径)下找,如果这个exe或者dll 是自己编的,那无论它放在哪里,pdb文件只要不动,调试器都能找到它。如果调试器在那个路径下找不到,就会到exe或者dll的同级目录找。例如这个工 程是别人编出来的,连同符号文件一起发过来,我们只要把符号文件与exe或者dll放在同级目录,调试器也能找到它。当然,在调试器中也可以自己指定符号 文件路径
xsd
xsd是指xml结构定义 ( xml schemas definition )
xml schema 是dtd的替代品。xml schema语言也就是xsd。
xml schema描述了xml文档的结构。可以用一个指定的xml schema来验证某个xml文档,以检查该xml文档是否符合其要求。文档设计者可以通过xml schema指定一个xml文档所允许的结构和内容,并可据此检查一个xml文档是否是有效的。xml schema本身是一个xml文档,它符合xml语法结构。可以用通用的xml解析器解析它。
一个xml schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。
xsd是dtd替代者的原因,一是据将来的条件可扩展,二是比dtd丰富和有用,三是用xml书写,四是支持数据类型,五是支持命名空间。
xsd文件的后缀名为.xsd。
xml schema的优点:
1) xml schema基于xml,没有专门的语法
2) xml可以象其他xml文件一样解析和处理
3) xml schema支持一系列的数据类型(int、float、boolean、date等)
4) xml schema提供可扩充的数据模型。
5) xml schema支持综合命名空间
6) xml schema支持属性组。
.vshost.exe和.exe
.vshost.exe顾名思义,是visual studio宿主应用程序,vs运行调试时是打开的其实是这个文件,这个程序可以让vs跟踪调试信息。宿主进程是 visual studio 2005/2008/2010/201x 中的一项功能,能提高调试性能,支持部分信任调试并支持设计时表达式计算。
宿主进程文件的文件名中包含 vshost,并位于项目的输出文件夹中。而exe则可以直接打开,vs不会跟踪任何这个文件的运行情况。只要引用的程序集完整,可直接运行。
.exe.config和.vshost.exe.config的差异
.exe.config是非调试下的配置文件。
vshost.exe.config是个临时文件,在debug时候生成的调试的时候用的。
文件夹中vshost.exe.config文件的内容和.exe.config是完全一样的,主要用于宿主进程调试,不应通过应用程序直接运行或部署。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
下一篇: 解析asp.net的分页控件