Ich versuche, eine zusammengeführte Version von FakeItEasy zu erstellen, die Castle.Core enthält. Ich habe über ILMerge gelesen und es schien, als wäre es die Lösung, die ich brauchte. Nach dem Herunterladen und Erstellen von FakeItEasy kopierte ich alle benötigten Dateien (FakeItEasy.dll (.NET4), Castle.Core.dll (.NET4), ilmerge.exe, FakeItEasy.snk) in den gleichen Ordner. Ich lief dann den folgenden Befehl ein:Erstellen von signierten Bibliothek mit ILMerge werfen Ausnahme
ilmerge
/keyfile:FakeItEasy.snk
/out:..\FakeItEasy.dll
/t:library
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319
FakeItEasy.dll Castle.Core.dll
Und bekam folgendes Ergebnis:
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)
Wenn ich die „/keyfile:FakeItEasy.snk“ die fusionierte Baugruppe erstellt wegzulassen ist ganz gut, aber das hilft mir nicht, da ich eine signierte Version brauche.
Ich habe auch versucht, die Zielplattform spezifiziert als:
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319
aber die Ergebnisse waren die gleichen.
Hey, hast du eine Antwort darauf gefunden, da ich das gleiche Problem habe. – Confused
Ich habe es nie herausgefunden. Am Ende haben wir die Version von FakeItEasy verwendet, die über NuGet verteilt wurde, so dass das Problem wegfiel. –
Ein Workaround, der für mich funktionierte, war "corflags ilmerge/32bitreq +/force", damit es im 32-Bit-Modus statt im 64-Bit-Modus ausgeführt wird. – jnm2