2009-02-14 6 views
4

Я знаю, что двоичные файлы, встроенные в Windows, не нужно перекомпилировать для Linux-машин с Mono. Работает ли это наоборот? Являются ли двоичные файлы, созданные с помощью Mono на Linux-машинах, выполняемыми в Windows с помощью только .NET Framework?Исполняемые файлы, созданные в Mono на Windows

ответ

5

Да - формат файла переносится между Mono и .NET. Конечно, это запрещает ошибки в реализации, что не является невозможностью.

Формат файла даже документированы в ECMA-335, раздел 2, раздел 25.

Очевидно, что вы будете нуждаться в каких-либо узлов, что ваши ссылки приложения. Я считаю, что даже P/Invoke может быть быть портативным, если у вас есть одно имя родной библиотеки, отображающее те же функции.

2

Не забывайте, что бинарный файл .NET (exe или dll) содержит независимый от платформы IL-код.

Поэтому двоичный файл, созданный с помощью Mono on linux, можно запускать в Windows, если он содержит стандартную информацию заголовка портативного исполняемого файла (PE). Весь другой код внутри двоичного файла является независимым от платформы IL.

Для практического ознакомления с этим в действии попробуйте установить MonoDevelop на ящик Linux, а затем создать простой тестовый проект.

После создания проекта найдите каталог Debug. Он содержит exe-файл, который можно скопировать непосредственно в окна и запустить.