¿Qué está haciendo realmente Xamarin al usar un host de desarrollo de iOS?

Me he dado count de que existe la posibilidad de que Xamarin conecte Visual Studio a un host de desarrollo de iOS.

¿Qué es este host de construcción? ¿Hay alguna documentation sobre su architecture? ¿Qué código envía Xamarin.iOS a este host de construcción?

[Editar]

Quiero, como proyecto personal, crear un host de construcción de iOS en Windows. Sé que esto se puede lograr, y estoy seguro de que, técnicamente, tengo todas las herramientas necesarias para volver a crear uno. Mis preocupaciones se refieren a la architecture de un host de construcción original de iOS. Quiero saber cuál es la comunicación entre Xamarin y un host de desarrollo de iOS, y cuál es el flujo de compilation. Y esto no está documentado.

Una gran explicación desde aquí .

Xamarin.iOS comstack el código fuente c # contra un subset especial del marco mono. Esta versión networkingucida del marco mono incluye bibliotecas adicionales que permiten el acceso a las características específicas de la plataforma iOS. El comstackdor Xamarin.iOS, smsc, toma el código fuente y lo comstack en un lenguaje intermedio, ECMA CIL (lenguaje intermedio común); sin embargo, no produce binarys compatibles con ECMA ABI a diferencia del comstackdor mono normal, gmcs o dmsc. Esto significa que las bibliotecas .Net de terceros que desee include en su aplicación deberán volver a comstackrse contra el subset Xamarin.iOS del marco mono utilizando smsc.

Una vez que se compiló una aplicación Xamarin.iOS en CIL, debe volver a comstackrse en un código de máquina nativo que se puede ejecutar en un dispositivo iOS. Este process se lleva a cabo mediante la herramienta 'mtouch' de SDK, cuyo resultado es un package de aplicaciones que se puede implementar en el simulador de iOS o en un dispositivo iOS real, como un iPhone o iPad.

Debido a las restricciones impuestas por Apple, el kernel de iOS no permitirá que los progtwigs generen código en time de ejecución. Esta restricción tiene implicaciones severas para los sistemas de software que se ejecutan dentro de una máquina virtual utilizando la compilation just-in-time. La compilation just-in-time toma el código intermedio, por ejemplo, mono CIL y lo comstack en time de ejecución en el código máquina. Este código de máquina es compatible con el dispositivo en el que se ejecuta al momento de la ejecución.

Para evitar esta restricción, la herramienta mtouch comstack el CIL antes de time. Un process que el equipo mono describe como AOT, compilation anticipada.

introduzca la descripción de la imagen aquí

Algunas citas de Xamarin docs:

Xamarin iOS para Visual Studio logra una hazaña asombrosa: le permite crear, build y depurar aplicaciones iOS en una computadora con Windows utilizando Visual Studio IDE. Sin embargo, no puede hacerlo solo: las aplicaciones de iOS no pueden crearse sin el comstackdor de Apple, y no pueden desplegarse sin los certificates de Apple y las herramientas de firma de códigos. Esto significa que su installation de Xamarin iOS para Visual Studio requiere una connection a una computadora Mac OS X conectada a la networking para realizar estas tareas por usted. Una vez configurado, las herramientas de Xamarin harán que el process sea lo más transparente posible.

A partir de Xamarin.iOS 4.0, hay dos backends de generación de código para Xamarin.iOS. El motor de generación de código Mono regular y uno basado en el Comstackdor de optimization LLVM. Cada motor tiene sus pros y sus contras.

Normalmente, durante el process de desarrollo, es probable que use el motor de generación de código Mono, ya que le permitirá repetirlo rápidamente. Para las versiones de lanzamiento y la implementación de AppStore, querrá cambiar al motor de generación de código LLVM.

Conclusión

Entonces, no hay forma de hacer un host de compilation de iOS en Windows, como usted dijo.

Supongo que Xamarin enviará al host de construcción el file de ensamblaje .Net (parte naranja de la image), para comstackr en código ARM nativo con Apple llvm, y otras herramientas como xcode-build para firmar, vincular y crear su aplicación.