修改类的命名空间引发的发布问题

本文探讨了使用VS2010版本比较工具进行程序发布时遇到的问题,特别是当类从一个Assembly移动到另一个Assembly时,可能会导致Assembly加载错误。文章详细分析了在不同情况下该问题的表现形式及解决方案。

  以前每次发布程序之前我们都会用VS2010的版本比较工具去比较出本次程序修改都修改了那些.cs、.config等文件,从而最终确定哪些Project、config需要被包含在本次发布包中,但这种做法在我们将一个类从一个Project(Assambly)移动到另一个Project(Assambly)时遇到了问题,导致发布出的程序部署后出现Assambly加载的问题:

  具体分析如下:

  这次修改我们将一个类从一个旧的Project(Assambly)移到了另一个新的Project(Assambly),但是其中有一些原来引用这个类的Project(Assambly)在这个重构中并没有被导致任何文件内容上的修改(但实际上编译出的Assambly中的元数据和IL代码是不一样了),所以通过比较修改版本的方法是没有办法确定这种问题的。

  虽然将一个类从一个Project(Assambly)移动到另一个Project(Assambly)会导致这种问题,但也并不一定每次都会造成这个问题。

  如果原来引用这个类的Project(Assambly)中之前没有引用过新的Project(Assambly),那么这个重构就会导致引用旧的Project(Assambly)的Project(Assambly)编译不同过,最终必须通过添加对新的Project(Assambly)的引用并修改相关cs文件来解决这个问题,当然在这种情况下我们的比较方案还是可行的。

  如果原来引用这个类的Project(Assambly)中之前就同时引用了新旧的两个Project(Assambly),并且使用这个类的.cs文件中的命名空间也都引用了新旧的两个Project(Assambly)中的命名空间,那么这个重构就不会导致引用旧的Project(Assambly)的Project(Assambly)有任何文件内容上的改变,在这种情况下我们的比较版本的方案就不可行了。

转载于:https://www.cnblogs.com/zanxiaofeng/archive/2011/01/26/1945536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值