缘起:
这样一种情况
三个项目 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: }
三四年前我好像在某个项目中也有过类似的问题,也是用上面的办法解决的, 几年过去了,今天又遇到了这个问题. 难道真的没有好的办法了.
有没有更好的办法呢?....................