在使用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下载:
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
来源:https://www.cnblogs.com/winstonet/p/8549885.html