请高手解答,关于版本冲突问题,100分

sunshmcsdn 2005-01-13 10:18:46
这个问题困扰我很久了,因为工程庞大,采用分层结构,简单例子如下:A是基类,B继承A,C继承A,D分别继承BCA,ABCD是单独的SOLUTION,可以分别编译,假设D调用的A的版本是3.0,而B调用的A的版本是2.0,这就造成了版本冲突,如果工程结构很复杂,这种情况会非常严重,目前的解决方法只能是从底层往上,也就是按照A-B-C-D的顺序编译各个工程,才能解决。请问大家有没有更好的方法解决,另外IDE好像有个BUG,引用的类的地址经常莫名其妙的变化,比如A得类的地址有时就变成\Microsoft Visual Studio .NET 2003\Common7\IDE\PublicAssemblies,结果就造成版本冲突,这种情况我相信大家也见过,希望多多参与谈论
...全文
1062 56 打赏 收藏 转发到动态 举报
写回复
用AI写文章
56 条回复
切换为时间正序
请发表友善的回复…
发表回复
smx717616 2005-03-29
  • 打赏
  • 举报
回复
哈哈,一定是一起的。
bergkamp_my 2005-03-28
  • 打赏
  • 举报
回复
richard_sun和楼主一定有不可告人的关系
龙腾九霄 2005-03-24
  • 打赏
  • 举报
回复
应该多花点心思在接口设计上,然后由类继承接口定义,我想这样延伸性是否会好些,没有这么多项目的测试,希望能有所辅助。
flyingonnet 2005-03-12
  • 打赏
  • 举报
回复
大家看这个帖子的得分记录:
saucer (20)、 FJGoodGood (10)、 richard_sun (50)、 smx717616 (20)、


richard_sun: 这个ID只是在那里帮顶,和提出问题,根本没有帮忙,竟然50!
flyingonnet 2005-02-21
  • 打赏
  • 举报
回复
如果项目不是很大, 也可以考虑用project reference。20-30个还可以。
只是我们这个就不行了,原来,整个项目打开用半个小时,compile用3个小时。所以才改成的file reference。
flyingonnet 2005-02-21
  • 打赏
  • 举报
回复
我目前的项目很大, 我只负责一个很小很小的部分, 不过我动不动就要用到40-50 个项目来。
我大体上说一下我知道的部分,可能部分会用英文。

首先我们是用file reference,不是project reference,这个很重要,一定要用file reference。

设定dependency,就是上层的depend on 下层,这在vs。NET中可以设定

然后每个人都有一个U drive,其实就是Map 一个local 的file path。然后有script,可以从server上读取最新的所有的dll。这些server上的dll是晚上没有人的时候,服务器从source safe里边读取的,然后compile的。早上如果你copy这些dll下来,那么你的项目里边的其他人的dll就是最新的了。
每个项目里边的reference都是U drive的。

每个项目都有一个postbuild script,就是把project build output copy到U drive。这让你自己可以用自己的最新的dll。 晚上你checkin code, 别人就拿到你的dll 了。

在VS。NET里边的可以设定 Reference Path, 把Udrive的放到上边。如果出来问题,可以自己改,但绝大部分没有问题。

另外你的类的继承比较复杂的话,(我想不如我们的复杂),circular reference 是要避免的。也很容易,只要做一点努力就可以了。

希望有帮助。
sunboy020 2005-02-21
  • 打赏
  • 举报
回复
up
sykpboy 2005-02-15
  • 打赏
  • 举报
回复
MARK
  • 打赏
  • 举报
回复
才学习.NET,关注。
smx717616 2005-02-03
  • 打赏
  • 举报
回复
--我决定用第二种方法试试,当初没采用这种方法的主要原因是不同的人开发不同的模块,无法保证每个人做的结果能及时更新

这个问题用 Vss 可以很好的解决。

--并且工程众多,觉得编译时间太长
要方便就得付出代价,呵呵,时间不是很长了。

sunshmcsdn 2005-01-25
  • 打赏
  • 举报
回复
谢谢 jyk(喜欢编程。和气生财。共同提高。共同进步)
你的方法其实就是第二种方法把
sunshmcsdn 2005-01-25
  • 打赏
  • 举报
回复
to smx717616(.Net进行中……)
我决定用第二种方法试试,当初没采用这种方法的主要原因是不同的人开发不同的模块,无法保证每个人做的结果能及时更新,并且工程众多,觉得编译时间太长,我不知道几十个工程在一起,编译调试是个什么感觉?
gao_771123 2005-01-25
  • 打赏
  • 举报
回复
高手众多,帮顶!
jhjhzr 2005-01-24
  • 打赏
  • 举报
回复
好多高手,学习!帮顶
自然框架 2005-01-23
  • 打赏
  • 举报
回复


我没有用继承,而是用的引用dll文件。
就是在B、C的项目里面引用A生成的DLL,在D的项目里面引用BCA分别生成的DLL。

然后在总的项目里面引用这四个DLL就行了。

另外我是先把DLL文件拷贝到要引用的项目的bin目录里面(比如把A生成的DLL拷贝到B的bin目录里)
然后在引用bin目录里的DLL(B引用自己项目里的DLL,而不是引用A项目里的DLL)。

这样如果有改动的话,只要把新生成的DLL文件拷贝到其他项目里的bin目录下就行了。
warren1999 2005-01-21
  • 打赏
  • 举报
回复
学习
programmer11 2005-01-21
  • 打赏
  • 举报
回复
帮你顶
98049522 2005-01-21
  • 打赏
  • 举报
回复
学习
心情解码 2005-01-21
  • 打赏
  • 举报
回复
学习




up
fancyhsq 2005-01-21
  • 打赏
  • 举报
回复
学习学习
加载更多回复(36)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧