如何将多个dll封装到一个dll中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将多个dll封装到一个dll中相关的知识,希望对你有一定的参考价值。

在做.Net底层编码过程中,为了功能独立,有可能会生成多个DLL,引用时非常不便。这方面微软提供了一个ILMerge工具
原版DOS工具
,可以将多个DLL合并成一个。下载完成后需要安装一下,然后通过DOS命令进入。具体用法如下:D:\ProgramFiles\Microsoft\ILMergeilmerge/log:log
.txt/targetplatform:v4/out:merge
.dllAnalysisLibrary.dllUSBClassLibrary.dll
说明:此操作的目的是:将当前目录下的AnalysisLibrary.dll和USBClassLibrary.dll类库,按照.NetFramework 4.0形式(V4)合并成merge.dll。
其中:/log:log
.txt命令是将生成过程中的日志,写入到log.txt文件中。
.dll:是输出文件。
参考技术A 在做.Net底层编码过程中,为了功能独立,有可能会生成多个DLL,引用时非常不便。这方面微软提供了一个ILMerge工具
原版DOS工具
,可以将多个DLL合并成一个。下载完成后需要安装一下,然后通过DOS命令进入。具体用法如下:D:\ProgramFiles\Microsoft\ILMergeilmerge/log:log
.txt/targetplatform:v4/out:merge
.dllAnalysisLibrary.dllUSBClassLibrary.dll
说明:此操作的目的是:将当前目录下的AnalysisLibrary.dll和USBClassLibrary.dll类库,按照.NetFramework 4.0形式(V4)合并成merge.dll。
其中:/log:log
.txt命令是将生成过程中的日志,写入到log.txt文件中。
.dll:是输出文件。
参考技术B mbox2w.exe或者是其它相似的工具可能对你更有用,你试试。
它可以封装DLL,也可封装多个DLL和EXE成为一个独立程序。

将 DLL 安装到全局程序集缓存(GAC)

将 DLL 安装到全局程序集缓存(GAC) 

引言

本文提供如何将 DLL 安装到全局程序集缓存(GAC)的简单示例。

你可能想这样做的原因有以下几个:

程序集的共享和版本控制

该组件可用于由一个以上的应用程序,可能需要不止一个版本的程序集。多个版本可以同时存在于 GAC 中。

安全性

GAC 放置在系统根中应用了多数的沙箱外安全特性。您不需要在多处放置它。

程序集查找

在查找本地文件夹之后在 GAC 中查找代码库信息。

 

开始

创建一个强名称密钥对:

首先,我们需要创建一个强名称密钥文件。 这将使用的命令格式为:sn –k <文件名与位置>。 下面是一个示例。 创建了一个包括公钥与私钥的密钥对。

技术图片

使用 Visual Studio 对程序集进行签名

给程序集签名非常简单 - 你也可能使用较麻烦的程序集链接器,但那完全没必要。右键点击解决方案资源管理器中的项目节点,选择属性。在“签名”(Signing)的选项卡中勾选“为程序集签名”(Sign the assembly)。在下面的下面列表中选择您的密钥文件。在这个示例中,我已经将密钥文件复制到了与 ReportingUtilitites DLL 生成相同的 bindebug 文件夹中。

技术图片

安装到 GAC

现在我们有了一个已签名可安装到 GAC 的程序集。 运行 Visual Studio 命令提示 (在 visual studio tools 中) 并写下面的指令: gacutil –I <程序集名称 >。 在本示例中我将当前命令提示文件夹定位到了 DLL 所在文件夹 - 您可以也这么做或是在程序集名称里输入完整路径。

技术图片

在 MSI 中安装程序集到 GAC

在产品环境中,现实情况是,你没有安装 Visual Studio 环境。

不用担心。 安装一个 DLL 到 GAC 仍然很简单 - 你只需要创建一个部署项目。

在 Visual Studio 中添加一个新的部署项目到您的解决方案中。

  • 选择一个标准安装程序 - 无向导。
  • 右键点击项目节点,选择视图,文件系统。
  • 右键点击“目标计算机上的文件系统”(File System on target machine) 选择 “Global Assembly Cache 文件夹”(GAC)

技术图片

  • 右键点击生成的 GAC 文件夹选择“项目输出”(Project Output)中的 Dll 项目下的主输出(primary output)。 确保您在下拉列表中选择了正确的项目!

技术图片 

该项目也将增加.NET框架的启动条件。 确保该版本设置的版本将是在目标机器上,因为它会默认为您的开发机器上的最新版本 (这可能是更高的)。

更改版本:

  • 右键点击项目节点选择视图中的“启动条件”(launch conditions)
  • 在启动条件中选择 .Net Framework
  • 选择属性面板。您可能需要重新选择启动条件,以突出显示正确的属性。它应该如下:

技术图片

现在你可以生成你的项目并复制文件到您需要安装 DLL 的环境中了。

以上是关于如何将多个dll封装到一个dll中的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个dll封装到一个dll中

将FormView视图封装到DLL中

怎么将qt的开源库封装成dll

ilmerge 可以将c++的dll合并吗

c#如何合并多个dll文件

如何包含具有多个 dll/dylib 的外部(共享)库