Monoは、.NET実行時ではなくMonoを対象としていると仮定すると、ほぼすべてのCILアプリケーションを静的にコンパイルすることができるように、Ahead of Time Compilation(AOT)のサポートを大幅に改善しました。 。
全体的に良いアイデアかどうかは、アプリケーションと制約によって決まります。
たとえば、Novellは完全にAOTをコンパイルしてリンクしているMonoTouchを出荷しています。このアプリケーションは、ゲームだけでなく.NetアプリケーションもCocoaTouchフレームワークに対してiPhone上で実行できます。
これらの同じAOT手法を使用して、.NetまたはMonoランタイムのいずれかを前提条件として必要としないWinformsアプリケーションをコンパイルできます。 AOTに関連した多くのパフォーマンス・トレードオフ(ポジティブおよびネガティブ)がありますので、私はデュー・ディリジェンスなしで前進しません。
編集: "?なぜちょうどそれらのためにそれをインストールしない" に関するジョン・サンダース質問に対して
。それは実際にあなたがAOTコンパイルを必要とするかもしれない1つの理由をもたらします。ブートストラップ。
何かをインストールするには、実行可能ファイルを実行する必要があります。 MSI(msiexec.exeを暗黙的に起動する)を配布することも、exeを配布することもできます。 MSIは機能的ですが、かなり恐ろしい開発者の経験です。そのため、アプリケーションをインストールする前に、必要な前提条件(.NETなど)をインストールする.NET(AOTコンパイル済みランタイム依存関係を除く)を使用してブートストラップを構築できます。
さらに、ユーザーは何もインストールする必要がないダウンロード可能な実行可能ファイルを(サイレントモードなど)出荷する必要があります。
さらに:.NETをインストールするには管理者特権が必要です。 AOTを使用すると、アプリケーションの要件を回避することができます。
また、そのいずれかが良いアイデアかどうかは、アプリケーションとあなたの制約によって決まります。
誰がこの質問に投票するのだろうか。静的にランタイムを含めて素晴らしいだろう。 –
いくつかの質問が明白な理由で投票されないように思われるので、私たちが頭を傷つけるようにコメントを残すことはありません。 –
.NETのインストールに何が問題なのですか?それをインストーラに含めます。 –