一直以来只知道如何引用
.dll
,但却不明白Visual Studio产生的另外两个副档名为.pdb
和.refresh
是在干嘛用的,这次把网路上找的资源整理贴上纪录。
.DLL(Dynamic Link Library 动态连结函式库)
.dll是包含程式码和资料的函式库,它不是一个独立的程式,不能够自己运行,它是向其他程式提供服务的一段程式码。
实务面上,会把多个专案共用的method或class提出来,并编译成.dll后,有需要用到的专案再去将它引用进自己的专案,以此达到程式码的重用性和可维护性。
当你用Visual Studio建立一个class时,你在build专案的同时,会自动产生在C:\\专案\bin\Debug\
的目录下
优点
程式码模组化(适当的将共用的程式码提出来)降低硬碟的空间容易维护及扩充其实这就很像平常在写程式,将重複的code提出来并包装,让需要用到这段method的部分,都去呼叫它,只是用不同的规则来运作。
.PDB(Program DataBase 程式资料库)
这个档案也是随着build的同时和.dll产生在同一个目录下。
主要在储存.dll内的区域变数名称、行数、档案名称,而这档案是在debug时,用来告诉你目前对应到的程式码行数和变数位置。
.refresh
当引用了一个外部的.dll,会自动产生一个.refresh,这个档案实际上是J个.dll的绝对路径,当引用的.dll更新程式码,引用的专案也会自动更新。
这边有做个验证,用的是Visual Studio 2012版
首先建立一个.dll
namespace dllTest{ public class Test { public double add(double first, double second) { return first + second; } }}
引用的专案
Test aTest = new Test(); aTest.add(1, 2);
这时候更改.dll
namespace dllTest{ public class Test { public double _first; public double _second; public double add(double first, double second) { return first + second; } }}
此时引用的专案需要直接run起来,它才会去比对两边的guid是否一致
Test aTest = new Test(); aTest.add(1, 2); aTest._first = 20; //不需要重新引用.dll,即获得更新后的程式码。