2011-09-17 11 views
16

En la compilación y demostraciones de Build 2011, siempre hablaban de C++, C#, Visual Basic y JavaScript. ¿No puedo crear aplicaciones de estilo Metro con F #? ¿O es seguro decir que si funciona con C#, entonces también funciona con F #?Aplicaciones estilo Metro con F #?

Respuesta

12

¿O es elegible para decir si funciona con C#, entonces también funciona con F #?

Sí, así es como se supone que funciona. Además de javascript y C/C++, cualquier lenguaje compatible con CLS que se ejecute en la parte superior de la CLR tendrá acceso a la API de WinRT.

Por desgracia, en la edición 2011 expreso contra usted no recibe soporte de herramientas, pero supongo que esto se sumarán progresivamente o de otras ediciones:

enter image description here

+18

No es tan fácil. Es cierto que la proyección de tiempo de ejecución es completamente transparente para todo lo que se compila en IL, pero la mayoría de los compiladores también necesitan cargar información de tipo de ensamblados en tiempo de compilación (para verificación de tipos). Esto significa poder leer y analizar archivos .winmd, que tienen algunas extensiones en comparación con los ensamblajes CLI de vanilla. Además, los archivos .winmd describen los tipos WinRT tal cual, sin aplicar reglas de proyección CLR, p. si los lee, verá un tipo que implementa la interfaz WinRT "Ilterable ", pero en tiempo de ejecución CLR lo correlacionará con 'IEnumerable '. Por lo tanto, se necesita soporte de compilador. –

8

que tenían la misma pregunta y ha creado una entrada en el blog: Create a Metro App in F# (NOT)

hay algunas cuestiones:

  • no puede hacer referencia ordinaria .NET de (incluso en C#) DLL. Tienen que haberse recompilado con una "referencia" al WinRT. Debido a esto, , no puede hacer referencia a la F # dll. Creo que esto se resolverá cuando se publique F # 3.0 (fuente: Comprender la diapositiva F # de Don Syme en compilación).
  • La capacidad de F # para crear aplicaciones Metro. Esto tiene que ser construido por el equipo F #. Esta es una pregunta abierta. Este es el enfoque all-F # (En WPF hoy es posible pero no recomendado).
  • Soporte de herramientas para la creación de proyectos de front-end de Metro. Este no será el caso para la versión F # 3.0. (fuente: Comprender la diapositiva F # de Don Syme en compilación).
6

mediante Visual Studio 11 Developer Preview (completa, no expresan), yo era capaz de hacer referencia y ejecutar F # código de una aplicación de estilo de C# de metro con las siguientes salvedades:

  • obtendrá una generar una advertencia que indique que no se puede hacer referencia al proyecto, aunque Visual Studio aún le permitirá agregarlo.

  • Debe eliminar todas las referencias a todas las DLL en el proyecto F #, incluido FSharp.Core.

Siguiendo estos pasos es posible ejecutar F # código de una aplicación de estilo de Metro C#, pero es casi imposible escribir ningún código útil en F # y sin referencias a las bibliotecas de idiomas núcleo. Esperemos que actualicen las bibliotecas para que sean compatibles con WinRT pronto.

1

La pregunta ha sido respondida aquí: Windows 8 and F# Aunque no se puede crear y diseñar metro de aplicaciones directamente en Fa #, todavía puede crear la llamada biblioteca portátil en F # con todos los modelos y ViewModels y utilizarlo en otros proyectos de Metro. No es ideal, pero funciona.

1

He transferido mi biblioteca de gráficos de acciones para .NET3.5-4.0 a la biblioteca portátil, funciona bastante bien en Metro con la aplicación C# Metro y parte de mi puente de Metro UI. Estoy convencido de que puedo usar F # para hacer la aplicación Metro en muchas partes.

Cuestiones relacionadas