2011-09-17 9 views
16

Build 2011の基調講演とデモで、彼らは常にC++、C#、Visual Basic、JavaScriptについて話していました。 F#でMetroスタイルアプリを構築できないのですか?それとも、C#で動作するならば、F#でも動作すると言うのは安全でしょうか?F#のメトロスタイルアプリ?

答えて

12

また、C#で動作する場合、F#でも動作すると言えますか?

はい、それはうまくいくはずです。 javascriptおよびC/C++に加えて、CLR上で実行されるCLS準拠の言語は、WinRT APIにアクセスできます。

は、残念ながら、VS 2011 Expressエディションでは、ツールのサポートを得ることはありませんが、私は、これは徐々にあるいは他のエディションに追加されます推測:少し7時40分の周りにこの程度

enter image description here

+18

それほど簡単ではありません。実際、実行時の投影はILにコンパイルされたものすべてに対して完全に透過的ですが、ほとんどのコンパイラはコンパイル時に型の情報をアセンブリから読み込む必要があります。これは、バニラCLIアセンブリと比較していくつかの拡張子を持つ.winmdファイルを読み込んで解析できることを意味します。さらに、.winmdファイルは、CLR投影ルールを適用せずに、WinRTタイプをそのまま記述します。もしあなたがそれらを読むと、 'IIterable ' WinRTインターフェイスを実装するタイプが見えますが、実行時にCLRはそれを 'IEnumerable 'にマップします。コンパイラのサポートが必要です。 –

8

私は、同じ質問を持っていたし、ブログ記事を作成:

  • あなたは普通の.NET DLLの(でもC#で)を参照することはできません。Create a Metro App in F# (NOT)

    は、いくつかの問題があります。彼らは をWinRTへの "参照"で再コンパイルする必要があります。この のため、F#dllを参照することはできません。私はこれがF# 3.0がリリースされたときに解決されると思う(出典:Don SymeのF#スライドの解説 ビルド)。

  • F#からメトロアプリを作成する能力。これはF#チームによって作成された でなければなりません。これは未解決の質問です。これはすべてのF# アプローチです(WPFでは今日は可能ですが推奨されません)。
  • メトロフロントエンドプロジェクトの作成のためのツールサポート。これは、 F#3.0リリースの場合には当てはまりません。 (出典:Don SymeのF#スライドの理解 ビルド)。
  • のVisual Studio 11の開発者プレビューを使用して
6

(エクスプレスではない、完全な)、私は以下の点に注意してC#MetroスタイルアプリケーションからF#のコードを参照して実行することができました:

  • あなたが取得しますVisual Studioではまだプロジェクトを追加することができますが、プロジェクトを参照できないという警告が表示されます。

  • FSharp.Coreを含むF#プロジェクトのすべてのDLLへの参照をすべて削除する必要があります。これらの手順に従うことにより

C#MetroスタイルアプリケーションからF#コードを実行することが可能であるが、コア言語のライブラリへの参照せずにF#で任意の有用なコードを書くことはほぼ不可能です。すぐにWinRT互換になるようライブラリを更新してくれることを祈っています。

1

質問はここで回答されています Windows 8 and F# あなたが作成することはできませんし、デザインメトロは、F#で直接アプリが、あなたはまだ、すべてのモデルとのviewmodelsでF#で、いわゆるポータブルライブラリを作成し、別の地下鉄プロジェクトでそれを使用することができます。それは理想的ではありませんが、機能します。

1

.NET3.5-4.0用の私の株価チャートライブラリをポータブルライブラリに移植しましたが、C#MetroアプリケーションといくつかのMetro UIブリッジでMetroでかなりうまく動作します。 私はF#を使ってメトロアプリケーションを作ることができると確信しています。

関連する問題