我正在尝试创建包含 Castle.Core 的 FakeItEasy 合并版本。我阅读了有关 ILMerge 的信息,这似乎是我需要的解决方案。下载并构建 FakeItEasy 后,我将所需的所有文件(FakeItEasy.dll (.NET4)、Castle.Core.dll (.NET4)、ilmerge.exe、FakeItEasy.snk)复制到同一个文件夹中。然后我运行以下命令:
ilmerge
/keyfile:FakeItEasy.snk
/out:..\FakeItEasy.dll
/t:library
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319
FakeItEasy.dll Castle.Core.dll
并得到以下结果:
An exception occurred during merging:
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at System.Compiler.Writer.MscorsnStrongNameSignatureGeneration(String wszFilePath, String wszKeyContainer, Byte[] pbKeyBlob, Int32 cbKeyBlob, IntPtr ppbSignatureBlob, IntPtr pcbSignatureBlob)
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)
如果我不使用“/keyfile:FakeItEasy.snk”,则合并的程序集创建得很好,但这对我没有帮助,因为我需要一个签名版本。
我还尝试将目标平台指定为:
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319
但结果是一样的。