晨鸟科技

 找回密码
 注册
搜索
查看: 14470|回复: 3
打印 上一主题 下一主题

[转]引用项目类库时dll.refresh文件的影响

[复制链接]
跳转到指定楼层
楼主
发表于 2011-3-30 12:43:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天,公司网站发布新版本,结果发现一个严重问题,其中一个类库没有自动更新,而是自动生成了一个过期版本。
' O- F4 o4 o) [. ^9 a; ]/ B+ }9 j" ]* w* t3 ~! c. I
经过排查发现,原来和VSS中的一个dll.refresh文件有关。& ?4 q) w. O4 h% G

1 j  m; j0 X# d9 q) W; K- {原因很简单:- N6 q4 t0 b; P/ F+ F$ v

1 ~8 K# A4 h3 c* E: J6 I1 d9 t1 D1。开发过程中,引用项目时,系统自动生成了该refresh文件,具体原因不明,似乎有时候项目引用不会生成此文件
6 b" _' r, t8 z+ u& i# S! S
$ D% l$ w5 @  J7 g2 Z2。该refresh文件指定了自动更新dll的路径,如果是类库引用,其中会指定Dubug或者Release目录,这次出错的文件就是指定Debug目录
5 ^, Y; Y. k" t& k# n9 j3 ?( p( T! S
3。开发人员误将该文件签入VSS代码库
; i% r  F" l6 y- ~: P3 y$ R* l2 n3 @1 b4 P
4。问题来了,该引用类库在第一期版本发布后多次变动,但接口无变化,所以都是单独生成该类库,然后只更新所有应用的对应DLL(Release版本),一直没有问题,但是,当某应用重新发布时,由于该项目BIN目录中refresh文件的存在,导致自动以该文件指定路径更新DLL,就导致了旧版本DLL(Debug版本)的发布
7 t- H/ }, |- S8 Y, X8 V1 p- }# w2 v4 U/ m; v* z* L
问题解决:* u3 K! @7 ^# Q6 |5 v/ [3 ^3 H
1 Z$ F3 P9 B3 k- j  {: ?- \
删除应用中dll.refresh文件,重新发布应用即可, B7 z9 q+ m% H+ @9 ]
1 H8 x1 l' u5 ?8 r% k$ C+ ]
遗留问题:
+ K$ Q7 U2 `% c0 ^" W: S! r1 Y9 W4 @! }* v* B
dll.refresh文件是否生成的条件不明,排查中发现,同一个应用中引用多个类库,不是所有的引用都生成该文件,同样,同一个类库在多个应用中的引用,也不是都生成该文件。. c% w; k) v5 a) X+ V" m; r. A
' Z; v9 C. J% U! I
沙发
 楼主| 发表于 2011-3-30 12:44:41 | 只看该作者
我自己在项目中,发现这个文件竟然不会根据配置管理器,自动地更新引用路径,我在配置管理器中,使用release的时候,该文件的路径竟然还是debug的路径
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|晨鸟科技 ( 沪ICP备09012675号 )

GMT+8, 2026-3-16 08:33 , Processed in 6.070546 second(s), 9 queries , Wincache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表