在使用VS进行.Net编程时,出现了一个奇怪的现象。

在一个类库项目中导入了dll库A后,再导入A的两个依赖项(dll库)B和C,执行“生成”操作时,出现错误信息,提示B和C的库版本与A所需的不一致。在应用程序中,可以编写app.config来指定B和C的版本,但在类库项目中并不自动识别app.config。

因此,如何指定A所需的B和C版本成为一个问题(仍未解决)。

后来,发现可以将ABC三个库进行合并,这样,A就不会缺少依赖库了。使用ILMerge后测试成功。可以参考:https://www.cnblogs.com/codedreams/p/5295082.html

摘录部分:

1、先下载最新的 ILMerge 工具安装包:

ILMerge是合并.net的assembly的工具,最新版的支持.net 4.0的ILmerge下载:

http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en

ILMerge用法示例如下:

ILMerge.exe /target:library /targetplatform:v4 /out:"E:\Projects\ILMergeTest\A\Ref\AandB4.dll" "E:\Projects\ILMergeTest\A\A\bin\Debug\*.dll" /wildcards /log:"E:\Projects\ILMergeTest\A\Ref\AandB4.log"

参数说明:

/target:library  =》表示生成目标为dll

/targetplatform:v4  =》 编译平台为.net4.0

/out:"E:\Projects\ILMergeTest\A\Ref\AandB4.dll"  =》合并后输出文件路径

"E:\Projects\ILMergeTest\A\A\bin\Debug\*.dll" /wildcards =》合并的dll,因为此处使用了通配符,因此需要 .wildcards

/log:"E:\Projects\ILMergeTest\A\Ref\AandB4.log" =》输出合并日志

2、相关参考链接帮助:

http://stackoverflow.com/questions/8077570/how-to-merge-multiple-assemblies-into-one

合并dll文件的更多相关文章

  1. 使用ILmerge合并Exe、Dll文件的帮助类

    原文:使用ILmerge合并Exe.Dll文件的帮助类 using System; using System.Collections.Generic; using System.Text; using ...

  2. C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL

    ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序.它既可以作为  开源使用,也可以作为NuGet包使用. 如果您在使用它时遇到任何问题,请与我们联系.(mbarnett _at_ ...

  3. 通过AssemblyResolve事件打包合并exe和dll文件

    使用WPF开发的安装包,在创建快捷方式的时候,需要用到COM程序集Windows Script Host Object Model,引用COM程序集后,会在debug目录生成Interop.IWshR ...

  4. 介绍开源的.net通信框架NetworkComms框架之九 合并DLL

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  5. C# 合并DLL, 合并DLL进入EXE 【转】

    使用方法非常简单 在项目属性窗口中,选择"生成事件",在"生成后事件命令行"下的文本框中输入 ilmerge /ndebug /t:dll /log c:/1/ ...

  6. LIB文件和DLL文件的作用

    (1)lib是编译时需要的,dll是运行时需要的.如果要完成源代码的编译,有lib就够了.如果也使动态连接的程序运行起来,有dll就够了.在开发和调试阶段,当然最好都有.(2)一般的动态库程序有lib ...

  7. C# 合并DLL, 合并DLL进入EXE

    原文:C# 合并DLL, 合并DLL进入EXE 使用方法非常简单 在项目属性窗口中,选择"生成事件",在"生成后事件命令行"下的文本框中输入 ilmerge / ...

  8. c++ 生成dll文件并调用-转

    .h(头文件) .lib(库文件) .dll(动态链接库文件) 之间的关系和作用的区分   .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll, ...

  9. Visual Studio 2012网站如何只生成一个DLL文件

    简介: 在Visual Studio 2005,2008,2010版本中,都有Web Deployment工具将网站进行发布,所有代码文件和库文件发布,生成为一个动态链接库文件,而在Visual St ...

随机推荐

  1. xss挑战之旅wp

    Level 1  -  180831 第一关很简单,开胃菜 payload: http://localhost/xss_game/level1.php?name=test123<script&g ...

  2. 汲取营养的blog专栏

    网路上博客专栏是学习提升.思考深化的好途径,目前发现的博客价值高的平台: (1)EETOP www.eetop.cn (2)CSND www.csdn.net (3)cnblog www.cnblog ...

  3. TCP三次握手四次挥手过程详解

    http://blog.csdn.net/imilli/article/details/50620104 TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面. ...

  4. 前端性能优化成神之路-HTTP压缩开启gzip

    什么是HTTP压缩 HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法. HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件. 能大大减少 ...

  5. dicom学习文章

    https://blog.csdn.net/column/details/dicom.html https://blog.csdn.net/zssureqh/article/details/49231 ...

  6. sqrt函数

    import numpy as np B = np.arange(3) print (B) print (np.sqrt(B)) #求平方根

  7. 简单的C#TCP协议收发数据示例

    参考:http://www.cnblogs.com/jzxx/p/5630516.html 一.原作者的这段话很好,先引用一下: Socket的Send方法,并非大家想象中的从一个端口发送消息到另一个 ...

  8. ansible-playbook 实战案例 全网备份 实时备份

    目录 ansible-playbook 基础介绍 1.YAML三板斧 2. ansible playbook 安装apache 示例 案例 全网备份 实时备份 环境规划 目录规划 base.yaml ...

  9. 004_Python之all()\any()

    http://www.jianshu.com/p/65b6b4a62071 一.待验证整理

  10. 深度学习框架PyTorch一书的学习-第六章-实战指南

    参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter6-实战指南 希望大家直接到上面的网址去查看代码,下面是本人的笔记 将上面地 ...