我有以下工具:
我有一个名为Common.dll
的公共库,MyProject.dll
依赖于Common.dll
以及其他名为Lib1.dll
和Lib2.dll
的其他DLL,这些DLL依赖于Common.dll
在MyProject.dll
。
现在我需要将所有DLL合并为一个ilmerge /log:log.txt /out:MyProject.dll Common.dll /internalize
,但内化所有依赖项,所以我按顺序完成了以下操作:
ilmerge /log:log.txt /out:Common.dll Common.dll Lib1.dll Lib2.dll
然后
MyProject.dll
到目前为止,如果我通过浏览消费代码中的文件位置来包含nuget pack MyProject.nuspec
作为参考,则没有问题,它可以正常工作,但如果我尝试打包到nuget存储库(本地或远程),
System.IO.FileNotFoundException
现在,当我在使用代码中安装NuGet包时,会引发异常Could not load file or assembly 'Common.dll
,说它MyProject.nuspec
我错在哪里?
修改:
这是我的MyProject.nuspec <?xml version="1.0"?>
<package >
<metadata>
<id>MyProject</id>
<version>1.0.1.0</version>
<authors>Author</authors>
<owners></owners>
<description>
This is a description
</description>
<copyright>Copyright 2017</copyright>
</metadata>
</package>
文件:
{{1}}
答案 0 :(得分:0)
确保从Common.dll程序集中没有按Type.GetType("Lib1", "Lib1.ClassName")
之类的名称请求程序集(如果有),在合并操作之前更改为Type.GetType("Lib1.ClassName")