晨鸟科技

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

作者: Star    时间: 2011-3-30 12:43
标题: [转]引用项目类库时dll.refresh文件的影响
昨天,公司网站发布新版本,结果发现一个严重问题,其中一个类库没有自动更新,而是自动生成了一个过期版本。# r$ K2 ~: w1 R" M

# H$ R/ p5 u: X0 F4 s经过排查发现,原来和VSS中的一个dll.refresh文件有关。' x$ W( e. F4 u0 z9 Q" {! g

) M  D# ^6 D. K. [" l7 o原因很简单:4 W: J6 i+ D2 p& M& U0 ^
  T" ?5 p, @* \6 L3 }2 z
1。开发过程中,引用项目时,系统自动生成了该refresh文件,具体原因不明,似乎有时候项目引用不会生成此文件
( A6 |) }; @, L! O
0 x4 e1 \5 h9 V2。该refresh文件指定了自动更新dll的路径,如果是类库引用,其中会指定Dubug或者Release目录,这次出错的文件就是指定Debug目录
7 P8 |' e) H" x/ F" X0 w) N9 P- h" E3 ~  T# T) W
3。开发人员误将该文件签入VSS代码库
9 w" f! Q) Q4 R1 C+ u7 |2 r! \* o6 y
4。问题来了,该引用类库在第一期版本发布后多次变动,但接口无变化,所以都是单独生成该类库,然后只更新所有应用的对应DLL(Release版本),一直没有问题,但是,当某应用重新发布时,由于该项目BIN目录中refresh文件的存在,导致自动以该文件指定路径更新DLL,就导致了旧版本DLL(Debug版本)的发布
2 ?; ~7 j  r* y( `# W  Q, ?- D7 z5 L7 ~/ d5 s, i( p/ x
问题解决:8 ~" x3 q9 G/ Y1 ?8 z
8 a+ H9 X4 o/ H1 _" F
删除应用中dll.refresh文件,重新发布应用即可
0 r) V" l5 P) N" F. K% v, Y3 Y1 H, q& g3 ^* A
遗留问题:
" H7 e! u. e* N( Z* c  M
4 Z+ |$ ]9 q! V* {% G! w4 Mdll.refresh文件是否生成的条件不明,排查中发现,同一个应用中引用多个类库,不是所有的引用都生成该文件,同样,同一个类库在多个应用中的引用,也不是都生成该文件。
' A$ a. q/ F2 ~6 V9 v. E5 t; Z! E6 B( B' W3 O

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




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