ILMerge无法解析依赖关系后的NuGet包

时间:2018-04-03 08:44:53

标签: c# dll nuget pack ilmerge

我有以下工具:

  • Visual Studio 2017
  • ILMerge 2.14.1208
  • NuGet.CommandLine 4.5.1
  • .NET Framework 4.0

我有一个名为Common.dll的公共库,MyProject.dll依赖于Common.dll以及其他名为Lib1.dllLib2.dll的其他DLL,这些DLL依赖于Common.dllMyProject.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}}

1 个答案:

答案 0 :(得分:0)

确保从Common.dll程序集中没有按Type.GetType("Lib1", "Lib1.ClassName")之类的名称请求程序集(如果有),在合并操作之前更改为Type.GetType("Lib1.ClassName")