Ответ 1
Отличное объяснение от здесь.
Xamarin.iOS компилирует исходный код С# на специальное подмножество моно рамки. Эта сокращенная версия моно-рамки включает дополнительные библиотеки, которые позволяют получить доступ к платформе iOS функции. Компилятор Xamarin.iOS, smsc, берет исходный код и компилирует его на промежуточный язык, ECMA CIL (общий промежуточный язык), однако он не производит ECMA ABI совместимые двоичные файлы, в отличие от обычного монокомпилятора, gmcs или dmsc. Это означает, что любые сторонние .Net-библиотеки, которые вы хотите включить в свою приложение необходимо будет перекомпилировать с помощью подмножества Xamarin.iOS мономодуля с помощью smsc.
Как только приложение Xamarin.iOS было скомпилировано в CIL, оно должно снова скомпилироваться в собственный машинный код, который может работать на iOS устройство. Этот процесс выполняется с помощью инструмента SDK "mtouch", результатом которого является пакет приложений, который может быть либо iOS-симулятор, либо реальное устройство iOS, такое как iPhone или IPAD.
Из-за ограничений, установленных Apple, ядро iOS не позволит программы для генерации кода во время выполнения. Это ограничение имеет серьезные последствия для программных систем, работающих внутри виртуальной машины используя компиляцию "точно в срок". Компиляция "точно в срок" принимает промежуточный код, например, моно CIL и компилирует его во время выполнения в машинный код. Этот машинный код совместим с устройством выполняется во время выполнения.
Чтобы обойти это ограничение, инструмент mtouch компилирует CIL вперед времени. Процесс, который моно-команда описывает как AOT, раньше времени сборник.
Некоторые цитаты из документов Xamarin:
Xamarin iOS для Visual Studio выполняет удивительный подвиг: он позволяет вы создаете, создаете и отлаживаете приложения iOS на компьютере под управлением Windows используя среду Visual Studio. Однако он не может сделать это один - iOS приложения не могут быть созданы без компилятора Apples, и они не могут быть развернуты без сертификатов Apple и подписи кода инструменты. Это означает, что ваш Xamarin iOS для установки Visual Studio требуется подключение к сетевому компьютеру Mac OS-X для выполнения эти задачи для вас. После настройки инструменты Xamarins процесс как можно более бесшовный.
Начиная с Xamarin.iOS 4.0, есть два генератора кода к Xamarin.iOS. Регулярный движок генерации кода Mono и один на компиляторе LLVM Optimizing. Каждый двигатель имеет свои плюсы и минусы.
Как правило, во время процесса разработки вы, вероятно, будете использовать Монодровый генератор кода, так как он позволит вам быстро выполнять итерацию. Для релиз и развертывание AppStore, вы захотите переключиться на Двигатель генерации кода LLVM.
Заключение
Таким образом, вы не можете сделать хост сборки iOS в Windows, как вы сказали.
Я предполагаю, что Xamarin отправит сборщику сборки файл сборки .Net(оранжевую часть рисунка), который будет скомпилирован в собственный ARM-код, используя Apple llvm, и другие инструменты, такие как xcode-build, чтобы подписаться, связать и создать ваше приложение,