Estoy intentando crear una versión combinada de FakeItEasy que incluya Castle.Core. Leí sobre ILMerge y parecía que era la solución que necesitaba. Después de descargar y compilar FakeItEasy, copié todos los archivos que necesitaba (FakeItEasy.dll (.NET4), Castle.Core.dll (.NET4), ilmerge.exe, FakeItEasy.snk) en la misma carpeta. entonces me encontré con el siguiente comando:Creación de una biblioteca firmada con ILMerge throwing exception
ilmerge
/keyfile:FakeItEasy.snk
/out:..\FakeItEasy.dll
/t:library
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319
FakeItEasy.dll Castle.Core.dll
y obtuvo el siguiente resultado:
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)
Si dejo fuera de la "/keyfile:FakeItEasy.snk" el conjunto fusionado se crea muy bien, pero eso no me ayuda, ya que necesito una versión firmada.
También he probado la especificación de la plataforma de destino como:
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319
pero los resultados fueron los mismos.
Oye, encontraste una respuesta a esto porque estoy teniendo el mismo problema. – Confused
Nunca lo resolvió. Terminamos usando la versión de FakeItEasy distribuida a través de NuGet, por lo que el problema desapareció. –
Una solución alternativa que funcionó para mí fue 'corflags ilmerge/32bitreq +/force' para que funcione en modo de 32 bits en lugar de 64 bits. – jnm2