做了个winform程序,写了个自定义控件,最后的程序是一个exe和一个dll。但是是个小程序,完全没有必要多包含一个dll,如何将这个dll编译到exe里面去只生成一个exe呢?

解决方案 »

  1.   

    直接来肯定是不行。貌似哪种语言也没这个功能。
    DLL 叫做动态链接库。顾名思义,动态链接。都做到exe里,那就是lib了。实现方法。1.第三方工具。貌似很多,不过都不咋好用,容易被报病毒木马什么的。
    2.反编译dll,直接把代码加到exe工程里去。貌似不厚道。如果自己写的,就没什么了。
      

  2.   

    我用了一种比较弱智的办法,直接把自定义控件的代码都移动到exe的代码里面去了。PS.自定义控件是自己写的。
    这样生成了一个exe。
    但是,我记得C++里面有种静态调用dll的方法。C#不能吗?
      

  3.   

    C#本来就是静态加载的。
    你说的C++的那个是引用的类库,直接把类库编译到C++的exe里了。
    那个类库不是dll,好像是lib。有方法可以把dll编译到exe里的资源中,使用时,直接就可以调用,不用另外生产个dll。
    但是,这个办法在delphi里见人用过。在C#里没见过。
      

  4.   

    .exe .dll 是和你建立的项目有关的。
    .exe是应用程序项目。
    .DLL一般是类库项目。
    你打问题也很模糊,一般是自定义的控件的话,就是做成DLL可以被引用就可以了。
      

  5.   

    ILMerge.exe可以合并多个assembly
    http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17630C++的静态调用?你是指引入库或者静态链接吧。C#在需要的时候加载dll,行为类似于引入库
      

  6.   

    好吧我重新解释一下。首先我做了个UserCtrl1,自定义控件。生成了UserCtrl1.dll
    然后在做 form1,生成form1.exe,里面放了控件 UserCtrl1.这样我的生成目录下面必须有:form1.exe和Userctrl1.dll才能运行程序。我希望,最终只有form1.exe就可以运行程序。
      

  7.   

    http://www.cnblogs.com/huangcong/archive/2010/03/29/1699904.html楼主,这个就是你想要的东西,C#版ILMerge-GUI,可将所有引用的DLL和exe文件打成一个exe文件。