我有一個C#項目,其中包含對ScintillaNET的引用。不幸的是,ScintillaNET喜歡檢測機器的體系結構,並根據運行的體系結構加載本機DLL。這意味着我的項目必須預編譯爲x86和x64版本(由於上述檢測,我無法使用任何CPU)。編譯x86系統上的C#.NET x64二進制文件
問題是,我的構建服務器是x86-只。有沒有辦法在x86機器上以x64模式編譯.NET程序集?據我所知,切換隻是強制計算機加載所需架構的程序集,並且在編譯時並不實際輸出任何與架構相關的代碼,但是,在編譯服務器I上的Mono 2.10.6下編譯時得到錯誤,如:
「錯誤CS0016:無法寫入文件'ScintillaNet」,原因:AMD64"
我不能用CorFlags.exe改變PE頭,因爲這是一個基於Linux的,構建服務器。有沒有辦法做到這一點?
沒有意義,位數由主啓動程序集(EXE)確定,而不是像ScintillaNET這樣的庫。使用AnyCPU。 –
聽起來像他的項目是主要的啓動程序集。如果它在64位機器上以x86啓動,Scintilla會自行檢測,找到x64,嘗試將本機x64 dll加載到x86應用程序並失敗。真的,它是Scintilla中的一個錯誤,它沒有檢測到當前進程的體系結構,而是機器。 – antiduh
根據mono文檔,'--aot'選項不會將平臺作爲參數。目前似乎不可能。 –