为什么我不能ILMerge Zxing?

时间:2018-11-12 15:24:12

标签: c# ilmerge zxing.net

尝试包含Zxing.NET软件包的ILMerge项目:

"C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" CommandLineDecoder.exe zxing.dll zxing.presentation.dll  /out:CommandLineDecoder2.exe

错误:

An exception occurred during merging:
Unresolved assembly reference not allowed: System.Numerics.
   at System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNode assembly)
   at System.Compiler.Ir2md.GetTypeRefIndex(TypeNode type)
   at System.Compiler.Ir2md.VisitReferencedType(TypeNode type)
   at System.Compiler.Ir2md.VisitReferencedType(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, Module module)
   at ILMerging.ILMerge.Merge()
   at ILMerging.ILMerge.Main(String[] args)

为什么会出现此错误?这是什么意思?该如何解决?

1 个答案:

答案 0 :(得分:0)

来自https://github.com/dotnet/ILMerge

  

ILMerge可在v4.0 .NET Runtime中运行,但也可以合并   其他框架版本的程序集使用   / targetplatformoption。请参阅文档。 (但是,可以   仅合并v2(及更高版本)程序集的PDB文件。)

我希望您使用的是System.Numerics中的类,该类在v4.0中不可用,您需要更改目标平台,无论是在代码中:

public void SetTargetPlatform(string platform, string dir);

或使用命令行:

/targetplatform:version,platformdirectory

第一个参数是平台版本,第二个参数是要在其中找到mscorlib.dll的目录。

文档的相关部分:

https://github.com/dotnet/ILMerge/blob/master/ilmerge-manual.md#221-settargetplatform