晨鸟科技
标题:
[转]引用项目类库时dll.refresh文件的影响
[打印本页]
作者:
Star
时间:
2011-3-30 12:43
标题:
[转]引用项目类库时dll.refresh文件的影响
昨天,公司网站发布新版本,结果发现一个严重问题,其中一个类库没有自动更新,而是自动生成了一个过期版本。
6 T$ ^( \/ E7 u! G
, C+ ^, S5 x8 u/ d6 G/ D
经过排查发现,原来和VSS中的一个dll.refresh文件有关。
8 i+ K! O6 K, V! ]7 f3 q# j
5 @) }& a" k( E# i1 m* h2 S8 C
原因很简单:
. }" x4 Z2 u4 p, L$ o
4 c1 [) y" s) M9 k/ m/ i
1。开发过程中,引用项目时,系统自动生成了该refresh文件,具体原因不明,似乎有时候项目引用不会生成此文件
& k+ H: ^- H; f3 ?9 G$ y; `
- t% t: c4 r6 I6 c: g) v
2。该refresh文件指定了自动更新dll的路径,如果是类库引用,其中会指定Dubug或者Release目录,这次出错的文件就是指定Debug目录
1 W' m& v0 M3 }$ T% @' U0 \# _
- o& \! Z+ h' k' D, ~1 m
3。开发人员误将该文件签入VSS代码库
( I( r7 L4 |# T+ d7 d4 F9 c7 T
, A: z7 t* W0 T- V5 o1 [' r
4。问题来了,该引用类库在第一期版本发布后多次变动,但接口无变化,所以都是单独生成该类库,然后只更新所有应用的对应DLL(Release版本),一直没有问题,但是,当某应用重新发布时,由于该项目BIN目录中refresh文件的存在,导致自动以该文件指定路径更新DLL,就导致了旧版本DLL(Debug版本)的发布
- {) X k9 Y5 K4 p& s6 e4 f
9 O. M& d$ ^9 F+ t+ E& _ u2 U! o
问题解决:
' i. G: t! T+ {$ O7 p: V2 A
: w/ y( ~) q: g- u( b6 F
删除应用中dll.refresh文件,重新发布应用即可
6 @) Q2 T! |1 F+ d2 S8 _* F9 Y; k
2 q* Y$ U5 Z r% o! H) b7 e
遗留问题:
6 \( C- A: P7 b7 V. O: s
8 H8 w: y4 e1 X" O @5 x0 `2 S
dll.refresh文件是否生成的条件不明,排查中发现,同一个应用中引用多个类库,不是所有的引用都生成该文件,同样,同一个类库在多个应用中的引用,也不是都生成该文件。
8 G5 \, [/ T: z7 w6 O( Z9 L
: r7 n8 k: B7 c3 x
作者:
Star
时间:
2011-3-30 12:44
我自己在项目中,发现这个文件竟然不会根据配置管理器,自动地更新引用路径,我在配置管理器中,使用release的时候,该文件的路径竟然还是debug的路径
欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/)
Powered by Discuz! X3.2