Tôi đang cố gắng tạo phiên bản được hợp nhất của FakeItEasy bao gồm Castle.Core. Tôi đọc về ILMerge và có vẻ như đó là giải pháp tôi cần. Sau khi tải xuống và xây dựng FakeItEasy tôi đã sao chép tất cả các tệp tôi cần (FakeItEasy.dll (.NET4), Castle.Core.dll (.NET4), ilmerge.exe, FakeItEasy.snk) vào cùng một thư mục. Sau đó tôi chạy lệnh sau:Tạo thư viện đã ký với ILMerge ném ngoại lệ
ilmerge
/keyfile:FakeItEasy.snk
/out:..\FakeItEasy.dll
/t:library
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319
FakeItEasy.dll Castle.Core.dll
Và có kết quả sau:
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)
Nếu tôi rời khỏi "/keyfile:FakeItEasy.snk" hội sáp nhập được tạo ra chỉ là tốt, nhưng điều đó không giúp tôi khi tôi cần một phiên bản đã ký.
Tôi cũng đã cố gắng xác định nền tảng mục tiêu như:
/targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319
nhưng kết quả là như nhau.
Xin chào, bạn có tìm thấy câu trả lời cho điều này vì tôi đang gặp phải sự cố tương tự không. – Confused
Không bao giờ tìm ra. Chúng tôi đã kết thúc bằng cách sử dụng phiên bản FakeItEasy được phân phối thông qua NuGet nên vấn đề đã biến mất. –
Giải pháp thay thế cho tôi là 'corflags ilmerge/32bitreq +/force' để chạy ở chế độ 32 bit thay vì 64 bit. – jnm2