晨鸟科技

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

作者: Star    时间: 2011-3-30 12:43
标题: [转]引用项目类库时dll.refresh文件的影响
昨天,公司网站发布新版本,结果发现一个严重问题,其中一个类库没有自动更新,而是自动生成了一个过期版本。
/ y; v+ p& ^" E6 }  _/ `  R! V, C' Z. W+ D
经过排查发现,原来和VSS中的一个dll.refresh文件有关。8 O9 h1 Q: b! l

7 b1 }: I+ S# o! e& [. ?6 Z  w原因很简单:# K" p# s5 P2 A  Q- d. C

) d2 v$ }  u) A: V+ H# b$ x1。开发过程中,引用项目时,系统自动生成了该refresh文件,具体原因不明,似乎有时候项目引用不会生成此文件4 \( @- E5 `! S  D9 o; Z5 R

9 a' z/ R+ L; ?2。该refresh文件指定了自动更新dll的路径,如果是类库引用,其中会指定Dubug或者Release目录,这次出错的文件就是指定Debug目录
5 u( x  ?$ }7 M3 i- V0 c% _- b8 r
, f3 o0 Y% K3 ~, q7 Z3。开发人员误将该文件签入VSS代码库2 F8 e* D. u. ?6 ?% Q3 \& w
  ?/ B. v; Q; W
4。问题来了,该引用类库在第一期版本发布后多次变动,但接口无变化,所以都是单独生成该类库,然后只更新所有应用的对应DLL(Release版本),一直没有问题,但是,当某应用重新发布时,由于该项目BIN目录中refresh文件的存在,导致自动以该文件指定路径更新DLL,就导致了旧版本DLL(Debug版本)的发布0 a) r) R9 D) G& Q! V1 t/ w

- V. r6 C  b0 [; F问题解决:' f& a6 X  r7 ^  h
. N  A. R8 t  \* U
删除应用中dll.refresh文件,重新发布应用即可0 I9 N6 C1 D4 ~6 U8 I
1 O4 e" J" t7 [1 E) O
遗留问题:1 l4 X' Z$ f0 [2 }2 f

! K- A* b: U5 Cdll.refresh文件是否生成的条件不明,排查中发现,同一个应用中引用多个类库,不是所有的引用都生成该文件,同样,同一个类库在多个应用中的引用,也不是都生成该文件。( N* b7 B% C7 C1 w. g- [6 T
7 Z& S# r! u7 Y% s; E( V+ Q

作者: Star    时间: 2011-3-30 12:44
我自己在项目中,发现这个文件竟然不会根据配置管理器,自动地更新引用路径,我在配置管理器中,使用release的时候,该文件的路径竟然还是debug的路径




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