LMerge-github

news/2024/7/3 17:41:28

ILMerge

ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序。它可以免费使用,并以NuGet包的形式提供。

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

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

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

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

目前的版本是2.14.1208(2014年12月8日创建)。注意:不再有在v1.1运行时中运行的ILMerge版本。

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

目前,ILMerge仅适用于基于Windows的平台。它还不支持Rotor或Mono。

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

安装

如ilmerge NuGet页面所述,该软件包可以从Visual Studio环境安装。在Solution Explorer视图中展开项目容器。右键单击references并选择Manage NuGet Packages

NuGet参考设置

确保Package source设置为nuget.org

NuGet包源

接下来,单击Tools - NuGet Package Manager - Package Manager Console。确保Package source也设置为nuget.org

NuGet Pakage Manager Console source.PNG

要为项目安装,请使用Install-Package命令:

Install-Package ilmerge -Version 3.0.21

用法

的MSBuild

ILMerge可以使用NuGet包在MSBuild中使用:

< Project  Sdk =  Microsoft.NET.Sdk  >

  < ItemGroup >
    < PackageReference  Include =  ILMerge   Version =  2.15.0  />
  </ ItemGroup >

  < Target  Name =  ILMerge  >
     <! - ILMergePath属性指向ILMerge.exe控制台应用程序的位置- > 
    < Exec  Command =  $(ILMergeConsolePath)/out:Merged.dll File1.dll File2.dll  />
  </ Target >

</ Project >

编辑项目.csproj.vbproj文件(在相应<Project> .. </Project>标记内,通常在文件末尾。如果编译特定目标,请使用显式目录,例如Bin\x64\Release

<ItemGroup>
    <PackageReference Include="ILMerge" Version="2.15.0" />
  </ItemGroup>

  <Target Name="ILMerge">
    <!-- the ILMergePath property points to the location of ILMerge.exe console application -->
    <Exec Command="$(ILMergeConsolePath) Bin\x64\Release\myapp.exe  /out:myapp.exe Bin\x64\Release\File1.dll Bin\x64\Release\File2.dll Bin\x64\Release\File3.dll " />
  </Target>

虽然XML文件中通常会忽略空格,但在这种情况下,确切的文本将作为DOS命令处理,因此为了提高可读性,请使用克拉^(shift 6)行扩展器:

<ItemGroup>
    <PackageReference Include="ILMerge" Version="2.15.0" />
  </ItemGroup>

  <Target Name="ILMerge">
    <!-- the ILMergePath property points to the location of ILMerge.exe console application -->
    <Exec Command="$(ILMergeConsolePath) Bin\x64\Release\myapp.exe ^
    /out:myapp.exe ^
    Bin\x64\Release\File1.dll ^
    Bin\x64\Release\File2.dll ^ 
    Bin\x64\Release\File3.dll " />
  </Target>

DOS dir / b选项可以帮助列出所有依赖项:

dir bin\x64\Debug\*.dll /b

从Visual Studio Developer命令提示符:

下载/安装软件包参考
msbuild / t:恢复

运行ILMerge目标
msbuild / t:ILMerge

ILMerge在批处理文件中运行:

此处不需要Visual Studio Developer命令提示符,因为msbuild未使用。

@echo off

:: this script needs https://www.nuget.org/packages/ilmerge

:: set your target executable name (typically [projectname].exe)
SET APP_NAME=myapp.exe

:: Set build, used for directory. Typically Release or Debug
SET ILMERGE_BUILD=Debug

:: Set platform, typically x64
SET ILMERGE_PLATFORM=x64

:: set your NuGet ILMerge Version, this is the number from the package manager install, for example:
:: PM> Install-Package ilmerge -Version 3.0.21
:: to confirm it is installed for a given project, see the packages.config file
SET ILMERGE_VERSION=3.0.21

:: the full ILMerge should be found here:
SET ILMERGE_PATH=%USERPROFILE%\.nuget\packages\ilmerge\%ILMERGE_VERSION%\tools\net452
:: dir "%ILMERGE_PATH%"\ILMerge.exe

echo Merging %APP_NAME% ...

:: add project DLL's starting with replacing the FirstLib with this project's DLL
"%ILMERGE_PATH%"\ILMerge.exe Bin\x64\Release\%APP_NAME%  ^
  /lib:Bin\%ILMERGE_PLATFORM%\%ILMERGE_BUILD%\ ^
  /out:%APP_NAME% ^
  FirstLib.dll ^
  mylib1.dll ^
  Microsoft.lib2.dll ^
  SomeOtherLib.dll ^
  \otherlibdir\otherlib.dll 


:Done
dir %APP_NAME%

http://www.niftyadmin.cn/n/3230032.html

相关文章

数据结构学习笔记3.1--划分

划分是快速排序的根本机制&#xff0c;主要是把数组分为两组&#xff1a;小于关键字的数据项在一组&#xff0c;大于关键字的数据项在一组。 /*** 划分数据* * param left 左边数据* param right 右边数据* param pivot 参照值* return*/public static int partitionIt(int lef…

RTP协议的报文结构

RTP头格式如图structure所示&#xff1a;开始12个八进制出现在每个RTP包中&#xff0c;而CSRC标识列表仅出现在混合器插入时。各段含义如下&#xff1a; ①版本&#xff08;V&#xff09; 2位&#xff0c;标识RTP版本。 ②填充标识&#xff08;P&#xff09; 1位&#xff0c;如…

python电路仿真软件_电路仿真软件multisim

我可以给你一份希望可以帮助你安装教程1、解压下载文件夹&#xff0c;双击运行“NI_Circuit_Design_Suite_14_0.exe”应用程序&#xff0c;弹出Multisim14.0需要解压&#xff0c;直接点击确定2、选择解压的路径&#xff0c;建议默认&#xff0c;若需要更改则点击Browse更换路径…

ILMerge在MSBuild与ILMerge在批处理文件中运行

ILMerge ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序。它可以免费使用&#xff0c;并以NuGet包的形式提供。 如果您在使用它时遇到任何问题&#xff0c;请与我们联系。&#xff08;mbarnett at microsoft dot com&#xff09;。但首先尝试阅读文档。 ILMerg…

PHP错误处理及异常处理笔记

给新人总结一下PHP的错误处理。 PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则&#xff0c;以及修改错误记录的方式. 这样&#xff0c;你就可以根据自己的需要&#xff0c;来更改和加强错误输出信息以满足实际需要. 通过日志记录功能&#xff0c;你…

移动网流量用户身份识别系统的源代码_安定门车牌识别系统厂家哪家好

产品品牌北京同兴宏业建筑装饰产品型号齐全生产城市北京发货城市北京供货总量10000最小起订1产品单价1计量单位个安定门车牌识别系统厂家哪家好 北京同兴宏业建筑装饰有限公司致力于生产优质电动门&#xff0c;车库门&#xff0c;卷帘门&#xff0c;电动伸缩门&#xff0c;段滑…

移动电话的实现

BTS,BSC,HLR,VLR,AUC,EIR,MSC

关于PHP include文件时的文件查找顺序

常常被include文件的路径搞晕。 看来是要理一理的时候了。 PHP官方文档关于include搜索路径的解释是&#xff1a;先查找工作目录下相对于include_path设置所对应的路径&#xff0c;然后再搜索执行文件所在目录相对于include_path设置所对应的路径&#xff0c;如果两个总都不存在…