对于项目只引用,但没有使用的情况下,dll版本不再更新的一点想法

缘起:

   这样一种情况

   三个项目 A,B,C

    C引用B, B 引用 A

    B仅对A 是一个引用,没有任何的代码调用

    在编译的时候, A的项目的DLL会被复制到 C 项目下, 但是无论怎么改 A 项目中的代码, C bin目录下的 A.dll都不再更新了.更有甚者 就算你删除了 A.dll, 再编辑 A.dll也不再会被复制过来.

    最后的无奈之下的一个解决办法就是 在 A 项目中写随便写个方法, 由B项目调用一下,这样 dll版本就更新了.

 

类似的, 在A项目中

 

   1:   /// <summary>
   2:      /// 这个方法本身没有任何的意思,也不参与任何的操作,只是为了可以进行有效的编译,
   3:      /// 如果把这个方法或这个类去掉,那在编译的时候,项目中总不能得到最新版本,这是为什么呢?
   4:      /// 先记下,如果有人有更好的解决方法,请EMail给我,zbw911@gmail.com
   5:      /// </summary>
   6:      public class HookNewAlway
   7:      {
   8:          public static void Hookit()
   9:          {
  10:   
  11:          }
  12:      }

 

 

在B项目中 :

   1:    /// <summary>
   2:      /// 这个方法本身没有任何的意思,也不参与任何的操作,只是为了可以进行有效的编译,
   3:      /// 如果把这个方法或这个类去掉,那在编译的时候,项目中总不能得到最新版本,这是为什么呢?
   4:      /// 先记下,如果有人有更好的解决方法,请EMail给我,zbw911@gmail.com
   5:      /// 实际上还应该有另一个解决方法, 在子项目中做一个 Attribute, Useage.Assembly ,
   6:      /// 这样做也应该是可以的,
   7:      /// 对于间接引用的项目,没有代码的引用,所以极有可能,VS.net的编译器将这个"多余的dll"优化掉了.
   8:      /// </summary>
   9:      class NoThingToDo
  10:      {
  11:          public NoThingToDo()
  12:          {
  13:              GameGroup.Application.EntityDtoProfile.HookNewAlway.Hookit();
  14:          }
  15:      }

 

 

三四年前我好像在某个项目中也有过类似的问题,也是用上面的办法解决的, 几年过去了,今天又遇到了这个问题. 难道真的没有好的办法了.

  有没有更好的办法呢?....................

posted @ 2013-02-27 00:03  张保维  阅读(205)  评论(1编辑  收藏  举报