Tôi có dự án C# chứa tham chiếu đến ScintillaNET. Thật không may ScintillaNET thích phát hiện kiến trúc của máy và tải DLL gốc dựa trên kiến trúc đang chạy. Điều đó có nghĩa rằng dự án của tôi phải được biên dịch trước thành các phiên bản x86 và x64 (tôi không thể sử dụng bất kỳ CPU nào do phát hiện ở trên).Biên dịch nhị phân C# .NET x64 trên hệ thống x86
Vấn đề là máy chủ xây dựng của tôi chỉ có x86. Có cách nào tôi có thể biên dịch một hội đồng. NET ở chế độ x64 trên một máy x86? Theo như tôi biết, việc chuyển đổi đơn giản buộc máy tính phải tải assembly cho kiến trúc yêu cầu và không thực sự xuất ra bất kỳ mã phụ thuộc vào kiến trúc nào tại thời gian biên dịch, tuy nhiên, khi biên dịch theo Mono 2.10.6 trên máy chủ build I nhận được lỗi như:
"lỗi CS0016: không thể ghi vào tập tin 'ScintillaNet', nguyên nhân: AMD64"
tôi không thể sử dụng CorFlags.exe để thay đổi tiêu đề PE vì đây là một dựa trên Linux xây dựng máy chủ. Có cách nào để làm điều này không?
Làm cho không có ý nghĩa, bitness được xác định bởi hội đồng khởi động chính (EXE), không phải bởi một thư viện như ScintillaNET. Sử dụng AnyCPU. –
Có vẻ như dự án của anh là hội đồng khởi động chính. Nếu nó bắt đầu bằng x86 trên máy tính là x64, Scintilla sẽ tự phát hiện, tìm x64, thử tải các tệp x64 gốc vào ứng dụng x86 và không thành công. Thực sự, đó là một lỗi trong Scintilla mà nó không phát hiện ra kiến trúc của quá trình hiện tại, thay vì máy. – antiduh
Theo tài liệu đơn âm, tùy chọn '--aot' không lấy nền tảng làm tham số. Nó dường như không thể như thời điểm này. –