0

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

"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)

为什么我会收到此错误?这是什么意思?如何解决?

4

1 回答 1

0

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

ILMerge 在 v4.0 .NET Runtime 中运行,但它也能够使用 /targetplatform 选项合并来自其他框架版本的程序集。请参阅文档。(但是,它只能合并 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

于 2018-11-12T15:52:36.163 回答