未解析的程序集引用:使用ilmerge的System.Web.Http

时间:2018-04-21 04:08:29

标签: asp.net visual-studio-2017 ilmerge

我试图合并我的visual studio 2017项目的两个dll文件,并使用下面的命令行尝试了所有内容,但没有合并它们。

请帮我解决此问题。

以下是我的机器上安装的程序集:

enter image description here

enter image description here

这是已安装ILMerge的路径

enter image description here

IlMerge.exe.config文件

<?xml version ="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
  </startup>
</configuration>

使用命令行运行时获取以下异常:

命令行用法:

LMerge.exe /targetplatform:4.0,"C:\Windows\Microsoft.NET\Framework64\v4.0.30319" /out:C:\Users\XXX\Desktop\XXX\client.dll C:\Users\XXX\Desktop\XXX\lib1.dll C:\Users\XXX\Desktop\XXX\lib2.dll

例外:

An exception occurred during merging:
Unresolved assembly reference not allowed: System.Web.Http.
   at System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNode assembly)
   at System.Compiler.Ir2md.GetTypeRefIndex(TypeNode type)
   at System.Compiler.Ir2md.VisitClass(Class Class)
   at System.Compiler.Ir2md.VisitModule(Module module)
   at System.Compiler.Ir2md.SetupMetadataWriter(String debugSymbolsLocation)
   at System.Compiler.Ir2md.WritePE(Module module, String debugSymbolsLocation,
BinaryWriter writer)
   at System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols,
 Module module, Boolean delaySign, String keyFileName, String keyName)
   at System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Modu
le module)
   at ILMerging.ILMerge.Merge()
   at ILMerging.ILMerge.Main(String[] args)

1 个答案:

答案 0 :(得分:0)

尝试有一个简单的解决方案。您只需将/ targetplatform:v4,[dotnet-path]参数添加到ILMerge构建命令即可。对我来说,框架路径是:

C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 Tyhe完全合并命令看起来应该是这样的:

ilmerge /targetplatform:v4,"C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:"c.exe" &#34; A.EXE&#34; &#34; B.DLL&#34; 这应该可以解决问题。

尝试运行具有管理权限的每个命令。