ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序。它既可以作为  开源使用,也可以作为NuGet包使用

如果您在使用它时遇到任何问题,请与我们联系。(mbarnett _at_ microsoft _dot_ com)。但首先尝试阅读文档

ILMerge接受一组输入程序集并将它们合并到一个目标程序集中。输入程序集列表中的第一个程序集是主程序集。当主程序集是可执行文件时,目标程序集将创建为具有与主程序集相同的入口点的可执行文件。此外,如果主程序集具有强名称,并且提供了.snk文件,则使用指定的键重新签名目标程序集,以使其具有强名称。

ILMerge打包为控制台应用程序。但它的所有功能也可以通过编程方式获得。

有几个选项可以控制ILMerge的行为。有关详细信息,请参阅该工具随附的文档。

注意:不再有在v1.1运行时中运行的ILMerge版本。

ILMerge在v4.0 .NET Runtime中运行,但它也能够使用/ targetplatformoption合并来自其他框架版本的程序集。请参阅文档。(但是,它只能为v2(及更高版本)程序集合并PDB文件。)

ILMerge仅适用于Windows,但生成的程序集同时适用于.Net和Mono。

如果使用ASP.NET v2.0,则它提供了一个工具(基于ILMerge)来组合在预编译期间创建的程序集。您可以从ASP.NET网站获取更多详细信息。

ILMerge获取的三种方式

1、下载ILMerge,

网址:https://www.microsoft.com/en-us/download/details.aspx?id=17630,使用dos命令合并程序集

2、可以使用开源项目

网址:https://github.com/dotnet/ILMerge

3、C# 使用NuGet获取,NuGet包使用

Install-Package ilmerge -Version 3.0.29

下面本文先讲述ILMerge使用dos命令合并程序集

1、下载ILMerge,

网址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

网址:https://download.csdn.net/download/longtenggenssupreme/11143210

2、安装ILMerge

3、点击下一步,选择安装路径

4、安装完成

5、安装以后文件目录下内容

6、下面是主程序的exe以及引用的第三方类库dll,(复制到ILMerge目录下,方便演示)

7、下面使用dos合并第三方dll到exe中。

win + r 打开dos

输入   cd..   回车,

输入  cd..   回车,

输入  e:    回车

输入 cd soft  回车

输入 cd ilmerge 回车

到此步,已经进入到了ilmerge的安装目录了

具体的输入格式:

ILMerge的完整命令行是:

ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename [/delaysign]] [/internalize[:filename]]
[/t[arget]:(library|exe|winexe)] [/closed] [/ndebug] [/ver:version] [/copyattrs [/allowMultiple]]
[/xmldocs] [/attr:filename] ([/targetplatform:<version>[,<platformdir>]]|v1|v1.1|v2|v4)
[/useFullPublicKeyForReferences] [/zeroPeKind] [/wildcards] [/allowDup[:typename]]*
[/allowDuplicateResources] [/union] [/align:n]
/out:filename <primary assembly> [<other assemblies>...]

所有带参数的选项都可以使用:=作为分隔符使用。选项可以按任何顺序排列,但所有选项必须位于输入程序集列表之前。

)

输入合并操作:

ILMerge.exe  /log:123.log /t:winexe /ndebug /out:realestatetool.exe EvMS.Common.Devices.dll Newtonsoft.Json.Net20.dll

123.log 日志

可能的出现问题:

1. 合并interop这种由COM转换过来的DLL时,一定要注意,相关依赖的DLL必须也一起合并。
2. 如果有资源DLL, 应该注意资源文件的合并。

官方参考文档:documentation.

问题可以参考:https://www.microsoft.com/en-us/research/people/mbarnett/?from=http%3A%2F%2Fresearch.microsoft.com%2F~mbarnett%2Filmerge.aspx#!ilmerge

 

C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL的更多相关文章

  1. winform把所有dll打包成一个exe

    大家都知道做winform开发,是可以利用visual studio进行打包的,但是这种打包的方式需要双击安装,那么有没有什么方法,可以把winform程序打包成绿色版呢?当然,这里的“绿色版”也是相 ...

  2. 利用Costura.Fody制作绿色单文件程序(C#程序(含多个Dll)合并成一个Exe)

    原文:利用Costura.Fody制作绿色单文件程序(C#程序(含多个Dll)合并成一个Exe) 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了.这 ...

  3. C#程序(含多个Dll)合并成一个Exe

    把C#程序(含多个Dll)合并成一个Exe的超简单方法   开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一 ...

  4. 将WinForm程序(含多个非托管Dll)合并成一个exe的方法

    原文:将WinForm程序(含多个非托管Dll)合并成一个exe的方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. ILMerge能把托管dl ...

  5. 使用pyinstaller打包多个py文件为一个EXE文件

    1. 安装pyinstaller. pip install pyinstaller !!!!64位win7上打包后始终不能用,提示找不到ldap模块,换了32位win7就好了.!!!!(代码中涉及ld ...

  6. 用py2exe打包成一个exe文件

    用py2exe打包成一个exe文件 http://blog.csdn.net/franktan2010/article/details/46514607

  7. 使用rar把程序打包成一个exe

    根目录--全部文件--右键添加到压缩文件 常规--创建自解压压缩文件 高级--自解压选项 解压路径--Finger(自己写)--在"Program Files"中创建 设置--解压 ...

  8. 如何将你写的脚本程序打包成一个exe可执行程序

    ​    编写的程序打包成一个exe文件,随时可以双击执行,想想是不是很酷.接下来我们一起看一下如何将自己编写的程序打包为一个exe的可执行程序. 将程序打包成exe的好处 除了满足自己的成就感以外, ...

  9. Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit

    以两个C文件为例: 将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c.adc_driver.c编译成一个ko文件! 採用方法: 第一步.改动C文件 1 ...

随机推荐

  1. python之内置函数(一)

    一.内置函数一1.内置函数总览 abs() dict() help() min() setattr()all() dir() hex() next() slice() any() divmod() i ...

  2. Django 分页组件替换自定义分页

    Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """ ...

  3. BATCH+VBS脚本自动执行命令

    打开cmd,然后执行run.bat s 1就会执行tmpsw.vbs的内容,1是作为id传进去的参数. run.bat: @echo off set type=%1 set id=%2 :打开一个te ...

  4. css经常使用的六种文本样式

    css当中经常使用的六种文本样式 css 文本样式是相对于内容进行的样式修饰,下面来说下几种常见的文本样式. 首行缩进 首行缩进是将段落的第一行缩进,这是常用的文本格式化效果.一般地,中文写作时开头空 ...

  5. mysql数据库建表的基本规范

    1.创建表的时候必须指定主键,并且主键建立后最好不要再有数据修改的需求 mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集( 主键下存储该行的数据 ...

  6. golang与python多线程的并发速度

    一.golang的代码 package main import ( "fmt" "time" ) func Text_goroute(a int, b int) ...

  7. pta编译总结1

    打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号: ...

  8. Vue(项目踩坑)_解决vue中axios请求跨域的问题

    一.前言 今天在做项目的时候发现axios不能请求跨域接口 二.主要内容 1.之前直接用get方式请求聚合数据里的接口报错如下 2.当前请求的代码 3.解决方法 (1)在项目目录中依次找到:confi ...

  9. sudo brew install mongodb报错

    报错信息如下: Error: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew ...

  10. [物理学与PDEs]第1章第3节 真空中的 Maxwell 方程组, Lorentz 力 3.1 真空中的 Maxwell 方程组

    1.稍微修正以前局部使用的方程组可以得到真空中的 Maxwell 方程组: $$\beex \bea \Div {\bf E}&=\cfrac{\rho}{\ve_0},\\ \rot{\bf ...