2011-09-17 14 views
16

Nelle note e nelle demo di Build 2011, si parlava sempre di C++, C#, Visual Basic e JavaScript. Non posso creare app in stile Metro con F #? O è sicuro dire che se funziona con C#, funziona anche con F #?App stile Metro con F #?

risposta

12

Oppure è idoneo a dire se funziona con C# quindi funziona anche con F #?

Sì, è così che dovrebbe funzionare. Oltre a javascript e C/C++, qualsiasi linguaggio conforme a CLS che viene eseguito in cima al CLR avrà accesso all'API WinRT.

Purtroppo nel VS 2011 Express Edition non si ottiene il supporto di utensili, ma credo che questo sarà aggiunto gradualmente o di altre edizioni:

enter image description here

+18

Non è così facile. È vero, la proiezione di runtime è completamente trasparente per tutto ciò che viene compilato su IL, ma la maggior parte dei compilatori deve anche caricare le informazioni sul tipo dagli assembly in fase di compilazione (per il controllo dei tipi). Ciò significa essere in grado di leggere e analizzare i file .winmd, che hanno alcune estensioni rispetto agli assembly CLI vanilla. Inoltre, i file .winmd descrivono i tipi WinRT così come sono, senza applicare le regole di proiezione CLR, ad es. se li leggi, vedi un tipo che implementa l'interfaccia "IIterable " WinRT, ma in fase di runtime CLR la mapperà a "IEnumerable ". È quindi necessario il supporto del compilatore. –

8

Ho avuto la stessa domanda e ha creato un post sul blog: Create a Metro App in F# (NOT)

Ci sono alcuni problemi:

  • Non si può fare riferimento ordinario .NET (anche in C#) dll. Devono essere ricompilati con con un "riferimento" al WinRT. Per questo motivo, non è possibile fare riferimento alla dll F # . Penso che questo sarà risolto quando F # 3.0 ottenere rilasciato (fonte: Understanding F # diapositiva da Don Syme a build).
  • La capacità da F # per creare applicazioni della metropolitana. Questo deve essere costruito dal team di F #. Questa è una domanda aperta. Questo è l'approccio all-F # (in WPF è oggi possibile ma non consigliato).
  • Strumento di supporto per i progetti di front-end creazione della metropolitana. Questo non sarà il caso della versione F # 3.0 . (fonte: Capire la diapositiva di F # da Don Syme alla build ).
6

Utilizzando Visual Studio 11 Developer Preview (Full, non esprimono), sono stato in grado di fare riferimento ed eseguire codice F # da un'applicazione stile C# Metro con le seguenti avvertenze:

  • avrete una genera avviso dicendo che il progetto non può essere referenziato, anche se Visual Studio ti consente comunque di aggiungerlo.

  • È necessario rimuovere tutti i riferimenti a tutte le DLL nel progetto # F, tra cui FSharp.Core.

Seguendo questi passaggi è possibile eseguire codice F # da un'applicazione stile C# Metro, ma è quasi impossibile scrivere alcun codice utile in F #, senza riferimenti alle librerie di lingua di base. Speriamo che aggiornino presto le librerie per essere compatibili con WinRT.

1

La questione è stata risolta qui: Windows 8 and F# Anche se non è possibile creare e Metro progettazione applicazioni direttamente in F #, è comunque possibile creare cosiddetta biblioteca portatile in F # con tutti i modelli e ViewModels e utilizzarlo in un altro progetti della metropolitana. Non è l'ideale, ma funziona.

1

Ho portato la mia libreria di supporti per .NET 3.0.5-4.0 alla libreria Portable, funziona abbastanza bene su Metro con l'applicazione Metro C# e alcuni miei bridge UI Metro. Sono convinto di poter usare F # per rendere l'applicazione Metro in molte parti.

Problemi correlati