none
C#怎么把引用的一大堆dll静态连接,最后生成一个exe? RRS feed

答案

全部回复

  • 如题:C#怎么把引用的dll库静态编译进去,最后生成一个exe文件?
    2011年3月23日 2:43
  • DLL=动态链接库。如果你要静态链接代码的话,建议编译DLL的源代码生成一个静态链接库。

     



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年3月23日 3:29
    版主
  • 我是想把开发环境里的很多dll静态连接到exe。

    C#下没找到静态连接的资料。也不知道怎么搞成静态库。

    有没有高手指点一下。

    2011年3月23日 3:35
  • 引用的全部都是纯C#的MSIL代码的话(VB.Net和C++/CLI可能会产生融合不了的代码),可以尝试用ILMerge。写死了类库名字的可能运行不正常(例如DevExpress的库)。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年3月23日 4:00
    版主
  • 如果这些DLL都不是标准的DLL而是只包含托管代码的DLL的话,可能可以用MSIL把里面的MSIL抽取出来合并,但是限制很多。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年3月23日 4:13
    版主
  • dear
    就我所知應該沒辦法合併其他的dll,所以能做的是整理好這些相關的dll確定它們有跟著專案跑。
    1.若你的引用了標準的.NET dll,這些dll應該都會跟exe同一個路徑,或是在GAC資料夾裡
    http://www.dotblogs.com.tw/yc421206/archive/2009/04/16/8030.aspx

    2.若是非標準的.NET dll 可能會用到 p/invoke
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年3月24日 9:17
  • Yjw 你好,

    关于这个问题,有一些建议,你可以参考一下:

    建议1:之前提到的,用ILMerge将所有引用的DLL和exe文件打成一个exe文件。具体做法参考:http://www.cnblogs.com/kevin-wang/archive/2010/03/28/1699162.html

    建议2:建一个项目,引用dll文件,在项目里添加源文件,就是之前引用的dll文件。编译项目,生成exe文件,然后删除引用的dll文件(注意是先编译,再删除)运行EXE会自动生成DLL文件。具体内容参考:http://www.bysjlwdx.com/htm/27/397.htm

    建议3:把dll打包成resource的形式,然后放到exe中,运行程序时,先释放资源。可以参考一下这个链接:http://blog.csdn.net/xochenlin/archive/2008/11/06/3240939.aspx

    希望这些对你有帮助。

    Mio


    Mio Miao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月24日 11:23
    版主
  • to Mio
    学习了
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年3月24日 15:37
  • To 小章,

    大家互相学习。


    Mio Miao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月24日 16:05
    版主
  • 可以使用ILMerge来合并,也可以直接用Rector4.2版本合并,顺带还可以加壳,混淆。
    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年3月25日 4:20
    版主