मैं नकली इत्यादि का विलय संस्करण बनाने की कोशिश कर रहा हूं जिसमें Castle.Core शामिल है। मैंने आईएलएमर्ज के बारे में पढ़ा और ऐसा लगता था कि यह आवश्यक समाधान था। 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
लेकिन परिणाम एक ही थे।
अरे, क्या आपको इसका उत्तर मिल गया क्योंकि मुझे एक ही समस्या का सामना करना पड़ रहा है। – Confused
इसे कभी समझ नहीं आया। हम NuGet के माध्यम से वितरित FakeItEasy के संस्करण का उपयोग कर समाप्त हो गया, तो मुद्दा दूर चला गया। –
मेरे लिए काम करने वाला एक वर्कअराउंड 64-बिट के बजाय 32-बिट मोड में चलाने के लिए 'corflags ilmerge/32bitreq +/force' था। – jnm2