none
如何构建多dll程序 RRS feed

  • 问题

  •  由于项目程序比较大,我需要把各模块分别生成相应dll文件,这样有利于当某个模块出现问题,只需要更新这个相关的dll文件可以了,而不需要重新生成exe文件,我现在的问题是,我应该如何做? 谢谢各位的指导!!!

    2010年1月5日 15:33

答案

  • 你好!
         实际上你可以把类库项目和你的主项目放到同一个解决方案下!
         但是,当你引用的一些dll变化后,你必须重新生成主项目,引用的信息是保存在程序集的清单中的,其中包括了版本号,你dll变化了,版本号也变了,如果引用的信息不更新,就出问题了,所以你想避免重新生成主项目,这个做不到!
         为什么这么设计呢?为了防止dll崩溃!
    周雪峰
    2010年1月6日 3:00
    版主
  • 传统的应用程序都是直接把新的dll覆盖原来的dll就可以了,但是这样可能会导致破坏其他应用程序的后果!
    你的dll如果没有用应用强名,版本号不变就可以,但是建议你不要这样做!
    周雪峰
    2010年1月6日 3:29
    版主

全部回复

  • 你好
    你可以把你项目分成多个模块,每个模块可以在vs中选择 文件--新建项目选择Visual C#(如果是c#)--选择 类库,在类库里可以创建多个类,里面包含了程序集等信息,编译后每个类库会生成一个dll这样方便管理和维护
    啥叫乐观-得瑟的最高境界
    2010年1月6日 0:58
  • 你可以把每个模块建成一个单独的类库项目,然后你在主窗体中调用就可以


    努力+方法=成功
    2010年1月6日 1:18
  • 边雷,

    谢谢你的回复!

    我建的“windows窗体应用程序”已经生成dll文件,但是为了以后便于更新(因为可能到时候只是更新其中一个dll文件),我应该如何在主程序应用这些dll文件呢? 是通过添加应用还是用csc生成呢?


    2010年1月6日 1:36
  • 你直接添加引用,就可以把DLL组件添加到你要用的项目中了


    努力+方法=成功
    2010年1月6日 1:41
  • 降低程序各个模块的耦合性
    将不同模块包含在不同的类库项目中 WinForm 项目添加对这些项目的引用
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2010年1月6日 1:46
    版主
  • 我知道可以直接添加引用,但我不知道当以后更新dll文件后会不会出问题。

    谢谢
    2010年1月6日 2:29
  • 你好!
         实际上你可以把类库项目和你的主项目放到同一个解决方案下!
         但是,当你引用的一些dll变化后,你必须重新生成主项目,引用的信息是保存在程序集的清单中的,其中包括了版本号,你dll变化了,版本号也变了,如果引用的信息不更新,就出问题了,所以你想避免重新生成主项目,这个做不到!
         为什么这么设计呢?为了防止dll崩溃!
    周雪峰
    2010年1月6日 3:00
    版主
  • 如果你是为了更新比较方便的话,可以采用ClickOnce部署:
    http://msdn.microsoft.com/zh-cn/library/142dbbz4%28VS.80%29.aspx
    周雪峰
    2010年1月6日 3:03
    版主
  • 周雪峰,


    好像用pb开发的,如果只更新pbl就可以了,不用重新生成主程序。
    如果dll的版本号不变是不是就不用重新生成主程序呢?

    感谢!
    2010年1月6日 3:06
  • 传统的应用程序都是直接把新的dll覆盖原来的dll就可以了,但是这样可能会导致破坏其他应用程序的后果!
    你的dll如果没有用应用强名,版本号不变就可以,但是建议你不要这样做!
    周雪峰
    2010年1月6日 3:29
    版主
  • 谢谢你!
    2010年1月6日 3:41
  • 不客气啊!
    周雪峰
    2010年1月6日 3:55
    版主