Veo mucha información antigua sobre esta pregunta, y muchos artículos volando alrededor de Interwebs, pero no puedo decir exactamente dónde están las cosas.
Básicamente, quiero escribir código C # que luego pueda compilar en una aplicación nativa de Windows, y también compilar en una aplicación nativa de Mac (sin Parallels, sin Wine, etc.). Se puede hacer esto?
¿Son productos como Xamarin el camino a seguir? El sitio web de Xamarin dice "Use el mismo lenguaje, API y estructuras de datos para compartir un promedio del 75% del código de la aplicación en todas las plataformas de desarrollo móvil". pero no puedo decir qué podría implicar ese 25% del código de la aplicación que es específico de la plataforma ... Tampoco puedo decir si se dirigen a OSX y Windows, su sitio web está muy centrado en dispositivos móviles.
[añadido más tarde]
Resumen: Xamarin no está diseñado para crear aplicaciones multiplataforma: lo que le brindan es una forma de escribir aplicaciones de Mac en C #, utilizando las operaciones de la GUI de Mac. Lo que recomiendan es escribir todas las plataformas multiplataforma de "lógica de negocios" y luego escribir 2 GUI completamente separadas, una para Windows y otra para Mac.
C # / Qt parece estar en sus primeras fases (aunque si alguien se topa con este artículo en 2016 o más tarde, échale un vistazo).
Parece que mono hará multiplataforma, incluida la GUI, pero solo si usa Windows Forms.