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

  以前每次发布程序之前我们都会用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/p/1945536.html