Подтвердить что ты не робот

Компиляция двоичного файла С#.NET x64 в системе x86

У меня есть проект С#, который содержит ссылку на ScintillaNET. К сожалению, ScintillaNET любит обнаруживать архитектуру машины и загружает собственную DLL на основе текущей архитектуры. Это означает, что мой проект должен быть предварительно скомпилирован в версии x86 и x64 (я не могу использовать Any CPU из-за вышеуказанного обнаружения).

Проблема в том, что мой сервер сборки - только x86. Есть ли способ скомпилировать сборку .NET в режиме x64 на машине x86? Насколько мне известно, переключатель просто заставляет компьютер загружать сборку для требуемой архитектуры и на самом деле не выводит какой-либо зависящий от архитектуры код во время компиляции, однако при компиляции в Mono 2.10.6 на сервере сборки я получите такие ошибки, как:

"ошибка CS0016: Не удалось записать в файл` ScintillaNet ', вызывать: AMD64"

Я не могу использовать CorFlags.exe для изменения заголовков PE, поскольку это сервер сборки на базе Linux. Есть ли способ сделать это?

4b9b3361

Ответ 1

Я решил решить эту проблему, переключив проект обратно на любой процессор. Поскольку Scintilla будет работать только в собственной архитектуре независимо от настроек .NET, я должен был запустить ее как 64-разрядную на моей машине. Первоначально я намеревался заставить архитектуру 32-битный, чтобы получить Edit и Continue, и это приводит к путанице с тем, как Scintilla обнаруживает архитектуры.

В действительности, Scintilla будет принудительно внедряться в собственную архитектуру, но если вы создадите и запустите под любым процессором, приложение .NET будет работать нормально. Кроме того, поскольку я не могу запустить приложение .NET w/Scintilla в 32-битном режиме (для редактирования и продолжения работы), я не получаю никакого преимущества для форсирования 64-разрядного режима на моей машине.