晨鸟科技
标题:
[转]引用项目类库时dll.refresh文件的影响
[打印本页]
作者:
Star
时间:
2011-3-30 12:43
标题:
[转]引用项目类库时dll.refresh文件的影响
昨天,公司网站发布新版本,结果发现一个严重问题,其中一个类库没有自动更新,而是自动生成了一个过期版本。
) E0 t/ M& v2 T5 w$ J- y
7 w2 T1 ?# j" Q! }2 p
经过排查发现,原来和VSS中的一个dll.refresh文件有关。
9 o! n: d- v; O5 [* @9 T
8 H6 w2 ~" v Z- ]9 L, D
原因很简单:
% u' a# F) D; P
& c( f, `; u1 B6 m
1。开发过程中,引用项目时,系统自动生成了该refresh文件,具体原因不明,似乎有时候项目引用不会生成此文件
( {# b# y- l. F
- U' P, Q+ o, D/ U6 Y
2。该refresh文件指定了自动更新dll的路径,如果是类库引用,其中会指定Dubug或者Release目录,这次出错的文件就是指定Debug目录
9 s1 p8 g. J# e3 X
) ]$ [) ^; N* }( u4 d/ s. ^- [
3。开发人员误将该文件签入VSS代码库
/ V& Q3 s- l _ X d) M
5 u" @, A N/ z
4。问题来了,该引用类库在第一期版本发布后多次变动,但接口无变化,所以都是单独生成该类库,然后只更新所有应用的对应DLL(Release版本),一直没有问题,但是,当某应用重新发布时,由于该项目BIN目录中refresh文件的存在,导致自动以该文件指定路径更新DLL,就导致了旧版本DLL(Debug版本)的发布
* P7 k+ I! u1 p& }* Y; w
' W4 M Z7 _' u. |! @3 k
问题解决:
2 J8 F* B5 ^, K: s& h0 n8 `3 k
, v% j: Q( C( X1 G M a
删除应用中dll.refresh文件,重新发布应用即可
# Q$ A2 [& _; w* I5 o
" L0 e9 o0 ?0 E9 ]# D1 H
遗留问题:
! S5 B( z( b" s
w9 g7 U" H% v3 x
dll.refresh文件是否生成的条件不明,排查中发现,同一个应用中引用多个类库,不是所有的引用都生成该文件,同样,同一个类库在多个应用中的引用,也不是都生成该文件。
: V0 ^' H3 r, A; U7 C
. s0 X2 q9 R% u1 V9 N: L
作者:
Star
时间:
2011-3-30 12:44
我自己在项目中,发现这个文件竟然不会根据配置管理器,自动地更新引用路径,我在配置管理器中,使用release的时候,该文件的路径竟然还是debug的路径
欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/)
Powered by Discuz! X3.2