2009-07-27 34 views
15

.NETで開発されたアプリケーションをネイティブ実行可能ファイルに変換する方法はありますか?常にコンピュータがインターネットから更新されていない -.NET実行可能ファイルをネイティブ実行可能ファイルに変換する

(.NET Framework 3.5のSP1まで)全体のフレームワークをインストールするには時間がかかります。独立した実行可能ファイルを生成するためにNGenを呼び出すことは可能ですか?

おかげ

+0

を持っている場合は、アプリケーション用のインストーラと.NET Frameworkを展開することができ、それを持っている:http://stackoverflow.com/questions/ 626525/create-setup-project-that-includes-net-framework-3-5-sp1 – Greg

答えて

9

いいえ、NGen'dコードはまだフレームワークを必要とする - それだけ前のJIT、独自のアセンブリ内のコード。また、CLR自体のフレームワークも必要です。

私はMonoは、彼らがiPhone用に使用を計画している静的なコンパイラを持っていると信じています。それがWindowsでもうまくいくかどうかはわかりません。

以前はThinstallと呼ばれていた製品がありました。今はThinAppと呼ばれています。基本的にはアプリケーションの仮想化です。商用だが、試用版を手に入れることができるかもしれない。

個人的に私はそのような製品について多少心配するだろう - それは物事の主流の道から離れて方向転換、展開に来るときには、サポートコールの多くのためのレシピのように聞こえます。間違ってしまうのはひどいことばかりです。私はそれが動作しないことを言っていない、ちょうど私が慎重になるだろう。

.NET 3.5 (SP1) Client Profileを見ましたか?これは、インストール要件を少し軽減するのに役立ちます。

+0

ThinstallはVMwareによってもたらされ、現在は「ThinApp」と呼ばれています - http://www.vmware.com/products/thinapp/ –

+0

ありがとうサイモン - 更新されます。 –

12

それはまだ利用できませんですが、Monoプロジェクトチームは、あなたが探しているものを行いますAhead of Time compilerに取り組んでいます。 MonoがUnityのようにiPhoneで動作することが意図されていますが、すべてのプラットフォームで動作するはずです。

編集:それはモノのx86をサポートしていますが、私は(私が聞いたインタビューから、それが計画されていますが)、彼らはまだ依存クラスでパック機能が含まれているかどうかわからないんだけど

編集2 :現在、依存関係をサポートしています.Dykamに感謝します!

+0

aotはすでに有効です。私はあなたが依存するクラスで何を意味するのか分かりません。参照されたdllを含めることを意味するなら、それは確かにサポートされています。なぜなら、bclも結果として実行可能ファイルにコンパイルされなければならないからです。反射や関連は利用できないことに注意してください。 – Dykam

+0

ありがとうDykam。準備ができていないと言われたプロセスの最適化(すなわち、必要なクラスおよび/またはメソッドのみを含む)が行われた可能性があります。 –

+0

FYI、私が言及したインタビューはHanselminutesのこのエピソードの一部であったと信じています:http://www.hanselminutes.com/default.aspx?showID=186 –

3

NGenを使用してアプリケーションをネイティブ実行可能にすることはできますが、依然として.Netフレームワークに依存します。

+2

なぜこれがダウンしましたか?情報は正しい。 –

+0

私は、.NETフレームワークに "依然として依存している"一方、 "ネイティブ実行可能"とは言えません。 – lmsasu

+2

ネイティブコードを含むネイティブ実行可能ファイルですが、依然として外部ライブラリに依存しています。 –

3

NGENはネイティブEXEファイルへのEXEファイルをコンパイルするので、彼らが実行されているとして、彼らはコンパイルJITする必要はありません。彼らはまだフレームワークに依存しています。

.netアセンブリをスタンドアロンのexeファイルにコンパイルする製品を提供する商用企業がいくつかあります。 XenocodeとvmwareのThinappです。どちらも安いものではない。

1

いくつかの難読化ツールは、これを行う、あなたは(あなたのユーザーにそれを出荷する前に)事前にかかわらず、それをしなければならないでしょう。例はremotesoft's Salamanderです。

1

対象とするバージョンの.NETのみをインストールするだけで済みます。 .NET1.1 または .NET2.0

編集:あなたは3.5バージョンをターゲットにする必要がある場合には2.0と3の両方をインストールする必要があります。5

ILMerge(無料)は、いくつかのアセンブリを1つにまとめることができますが、コアランタイムでは機能しないと思います。

.NETプログラムを実行する場合は、.NET Frameworkがインストールされている必要があります。

+0

.NET 3.5は.NET 2.0フレームワークの上にあるライブラリです。 – ZippyV

+0

はい、私はあなたが正しいと思う1.1と2.0は別々ですが、3.5は2.0に余分なライブラリを追加しました – Frozenskys

1

ここでそれを行うと主張する商品があります:

http://www.xenocode.com/Obfuscator/

「をしっかりと展開.NETアプリケーションは、ないの.NET Frameworkをインストールします」

これにはどのような欠点があるのか​​は考えられません。

+1

価格は?笑。 –

+0

おそらく!私はちょうど価格が何であったかを知るためにログインを作成したくなかったので、たくさんあるはずです。 –

1

私たちは2007年にこの問題を解決するために設立された唯一の製品は、Xenocodeポストビルドました。当時から、この製品をうまく使用していて、かなり良い仮想化機能も使用しています。

唯一の問題は、購入したバージョンがWindows 7(バージョン< 4.0でコンパイルされたプログラムを実行するために.netフレームワークをインストールする必要がない)をサポートしていないことです。だから私はXenocodeに書きました。彼らはあなたが(今.NETの難読化と呼ばれる)ポストビルドの最新バージョンにアップグレードする必要があります勝利7のサポートを得るために

に答え。 Win 7はPostbuild 2007のサポートプラットフォームではありません。

関連する問題