繁体   English   中英

ILMerge输出带有processorArchitecture = x86的程序集

[英]ILMerge outputs assembly with processorArchitecture=x86

我对ILMerge(最新版本2.12.0803)有问题。 即使我的程序集将处理器体系结构设置为MSIL,输出合并的程序集也具有x86。

我运行ILMerge的方式是:

ILMerge.exe /t:library /targetPlatform="v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /keyfile:key.snk /output:"Test.dll" a.dll b.dll ... other assemblies

在构建时,我有一个警告:

正在构建的项目“ MSIL”的处理器体系结构与参考“ Test”,“ x86”的处理器体系结构之间不匹配

在运行时,我得到了File Not found异常:

无法加载文件或程序集'Test,版本= 3.9.3.2,区域性=中性,PublicKeyToken = 8fd4d0b13dde34b0'或其依赖项之一。 该系统找不到指定的文件。

运行gacutil:

C:\\ Windows \\ system32> gacutil / l“测试,版本= 3.9.32.0,区域性=中性,PublicKeyToken = 8fd4d0b13dde34b0” Microsoft(R).NET全局程序集缓存实用程序。 版本4.0.30319.17929版权所有(c)Microsoft Corporation。 版权所有。

全局程序集缓存包含以下程序集:测试,版本= 3.9.32.0,文化=中性,PublicKeyTok zh = 8fd4d0b13dde34b0,processorArchitecture = x86

有没有办法将合并的程序集的processorArchitecture更改为MSIL?

我解决了这个问题。 问题在于其中一个程序集需要32位,请参阅ServiceStack.Redis。

从ILMerge日志文件:

检查所有输入程序集是否具有兼容的PeKind。

ServiceStack.PeKind = ILonly
ServiceStack.Interfaces.PeKind = ILonly
ServiceStack.Common.PeKind = ILonly
ServiceStack.OrmLite.PeKind = ILonly
ServiceStack.Redis.PeKind = ILonly, Requires32bits
ServiceStack.ServiceInterface.PeKind = ILonly
ServiceStack.Text.PeKind = ILonly
log4net.PeKind = ILonly

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM