晨鸟科技

标题: [转]引用项目类库时dll.refresh文件的影响 [打印本页]

作者: Star    时间: 2011-3-30 12:43
标题: [转]引用项目类库时dll.refresh文件的影响
昨天,公司网站发布新版本,结果发现一个严重问题,其中一个类库没有自动更新,而是自动生成了一个过期版本。
8 j" o6 F9 X$ {, _) k( b
- J: s7 F9 C3 F( B! v( X经过排查发现,原来和VSS中的一个dll.refresh文件有关。' Z$ M7 L! G- F9 s: c$ C

6 w/ s3 ~) B  W- s. ^5 Q# E原因很简单:. H8 j' k9 ^' \3 R+ t: D% ?1 V: J
9 K0 [" W3 z! c% a
1。开发过程中,引用项目时,系统自动生成了该refresh文件,具体原因不明,似乎有时候项目引用不会生成此文件
* ~/ \( X7 U+ c3 f$ b
. s5 A: @) s; k, q; `2。该refresh文件指定了自动更新dll的路径,如果是类库引用,其中会指定Dubug或者Release目录,这次出错的文件就是指定Debug目录
4 b6 y" {; p; K; L$ `% O0 s/ Q. s2 u9 v8 F- ^
3。开发人员误将该文件签入VSS代码库$ J2 B$ b8 B; k# Z  `8 z6 }

, J7 q2 C+ x* d* J4。问题来了,该引用类库在第一期版本发布后多次变动,但接口无变化,所以都是单独生成该类库,然后只更新所有应用的对应DLL(Release版本),一直没有问题,但是,当某应用重新发布时,由于该项目BIN目录中refresh文件的存在,导致自动以该文件指定路径更新DLL,就导致了旧版本DLL(Debug版本)的发布) c9 P. Y6 l9 T5 d) K2 c

* f) H! x1 U. d: r& }% h问题解决:
: X8 i& |) e& K  y/ Y; x! S1 S
' ]: h& ^, ^) w2 `2 V删除应用中dll.refresh文件,重新发布应用即可
9 I" i3 l( R' P) ?; U) V1 m$ z$ R" e3 `! k
遗留问题:2 H* i3 N2 [: Y

! a% e. ^- w8 l3 {dll.refresh文件是否生成的条件不明,排查中发现,同一个应用中引用多个类库,不是所有的引用都生成该文件,同样,同一个类库在多个应用中的引用,也不是都生成该文件。
* |+ W, a4 J$ [9 \( C
. e7 @: K  G+ g9 H4 F4 x" T/ G: @
作者: Star    时间: 2011-3-30 12:44
我自己在项目中,发现这个文件竟然不会根据配置管理器,自动地更新引用路径,我在配置管理器中,使用release的时候,该文件的路径竟然还是debug的路径




欢迎光临 晨鸟科技 (http://www.chenniao.com/cprofessor/) Powered by Discuz! X3.2