zoukankan      html  css  js  c++  java
  • 修改类的命名空间引发的发布问题

      以前每次发布程序之前我们都会用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)有任何文件内容上的改变,在这种情况下我们的比较版本的方案就不可行了。

  • 相关阅读:
    如何在ubuntu里面使用JNI?
    sql server 关键字一
    自己编写的 objectDataSource 配合 GridView 实现分页...
    委托和匿名委托的比较
    实现 IEnumerable IEnumator 接口的类,可直接用作 Gridivew 的数据源
    ASP.NET 中的页面事件执行顺序
    泛型,集合的根本区别
    匿名委托的示例,贴一下以供参考...
    ajax "Sys 未定义" 的问题解决方法
    抽象工厂模式(C#)
  • 原文地址:https://www.cnblogs.com/zanxiaofeng/p/1945536.html
Copyright © 2011-2022 走看看