对.refresh文件还有疑问的看过来

来源:互联网 发布:手机自动开数据怎么办 编辑:程序博客网 时间:2024/06/03 03:00
使用VS开发ASP.Net应用程序的朋友应该都碰到过以下两个小问题:一个就是跟在DLL下面的.refresh文件,另一个就是bin目录不能直接签入到VSS或TFS里。
对于.refresh文件一开始就是觉得可有可无,不知所谓。而bin目录中的dll不能签入的文件,很长时间都是通过VSS直接拖进去的。

.refresh文件究竟是做什么用的?

.refresh是VS发现引入了第三方(或自行开发)的库后自动加入的。这个文件可以直接在VS里打开,其内容非常简单,就是一个引入DLL的路径。在生成时如果通过这个路径发现.refresh记录的源文件是否发生变化,如果有更新就会自动更新,如果觉得该文件无用或者误删除就会导致第三方库文件不会自动更新的问题(见参考1)。所以.refresh是用于自动更新第三方库引入的一个记录文件。

bin目录签入VSS,伪命题?!

大家可以注意到,VS资源管理器中Bin目录的图标是单独的,而Bin目录主要存放引入到类库,由于开发过程中经常会涉及到调试、更新等,所以Bin目录本不该签入进去(见参考2/3)。

应该如何规划库文件?

以笔者的经验,一个项目至少分为两个解决方案(.Solution),其中一个是库解决方案比如Lib,另一个是应用项目比如App。Lib下的项目比如Model、BLL、DAL等,App下放各种应用比如MainWeb、WebService、ClientTools等,一个典型的项目目录组织如下图所示。
重点就是建立一个公共的DLL文件输出目录BinFactory,LIb下所有项目都是库项目,设置输出目录到BinFactory,App目录下的项目都引入BinFactory的dll文件。当Lib更新后就会把文件输出到BinFactory,而这个时候.refresh文件就比较有用了,因为同时可能有多个项目( MainWeb、WebService等)引入库文件,如果手动更新到每个项目的bin文件就比较麻烦了,有了.refresh就会自动完成这个动作,非常方便。而这时只需要将BinFactory文件签入就可以让团队共享了,每个项目的bin文件就不用签入了。事情到此就perfect了。

参考1:引用项目类库时dll.refresh文件的影响 

参考2:细节决定成败—关于.net的.dll.refresh文件

参考3:SourceSafe 2005无法添加bin目录下的文件

原创粉丝点击