Я знаю, что двоичные файлы, встроенные в Windows, не нужно перекомпилировать для Linux-машин с Mono. Работает ли это наоборот? Являются ли двоичные файлы, созданные с помощью Mono на Linux-машинах, выполняемыми в Windows с помощью только .NET Framework?Исполняемые файлы, созданные в Mono на Windows
ответ
Да - формат файла переносится между Mono и .NET. Конечно, это запрещает ошибки в реализации, что не является невозможностью.
Формат файла даже документированы в ECMA-335, раздел 2, раздел 25.
Очевидно, что вы будете нуждаться в каких-либо узлов, что ваши ссылки приложения. Я считаю, что даже P/Invoke может быть быть портативным, если у вас есть одно имя родной библиотеки, отображающее те же функции.
Не забывайте, что бинарный файл .NET (exe или dll) содержит независимый от платформы IL-код.
Поэтому двоичный файл, созданный с помощью Mono on linux, можно запускать в Windows, если он содержит стандартную информацию заголовка портативного исполняемого файла (PE). Весь другой код внутри двоичного файла является независимым от платформы IL.
Для практического ознакомления с этим в действии попробуйте установить MonoDevelop на ящик Linux, а затем создать простой тестовый проект.
После создания проекта найдите каталог Debug. Он содержит exe-файл, который можно скопировать непосредственно в окна и запустить.