2011-12-25 46 views
1

VSでは、コードをテストしてデバッグしましたが、実際には最終的なプログラムやリリースのための準備はできませんでした。私がダウンロードしたプログラムの中には、それらが入っているフォルダ内にある必要のあるDLLがあり、私はちょうど1つの.exeとなっているプログラムを持っていました。すべてのファイルを1つのアプリケーションにコンパイルし、外部のDLLを持たない方法はありますか?何らかの理由でこの悪いプログラミング練習ですか? VSプログラムを1つの実行可能ファイルにコンパイルするにはどうすればよいですか?Visual Studio - 実行可能ファイルにアプリケーションを作成するには?

これは非常に明白な質問であることがわかりました。なぜなら、実際に答えを見つけることができないからです。チュートリアルを書くのはあまりにも明白なので、答えが見つかりません。

+1

あなたはどの言語を使用していますか? – SLaks

+0

アプリケーションのセットアップファイルを作成しますか? –

+0

C#、申し訳ありません。 – mowwwalker

答えて

3

C#またはVB.NETなどの管理言語を使用すると、ILMergeは使用できるユーティリティです。

ILMergeは、複数の.NETアセンブリを単一の.NETアセンブリにマージするためのユーティリティです。実行可能ファイルとDLLの両方で動作し、出力の処理とフォーマットを制御するためのいくつかのオプションが用意されています。

+0

IlMergeは完全に機能しました。ありがとう! – mowwwalker

1

実行可能プログラムをビルドするためにVisualStudioを使用しているだけであれば、実行するたびにそのプログラムが実行されます。すべてのデフォルト設定を使用している場合は、プロジェクトフォルダを開き、/ binディレクトリを探します。その下には/ debugと/ releaseディレクトリがあります。デバッグモードでプログラムをビルドする場合は、/ debugディレクトリを調べ、リリースモードでビルドする場合は、リリースディレクトリを調べます。 VSはあなたのプログラムが必要とする全てをそのディレクトリに入れます。これらのファイルはすべて、.Netランタイムがインストールされている別のマシンにコピーすることができ、実行する必要があります。

質問は、単一のexeファイルに複数のDLLを組み合わせるの詳細は、実際には、CodePlexのではそれについてのチュートリアルがありますされている場合:

ご存知のように、オブジェクトコードの伝統的なリンクがもはや必要である で。ネット。 .NETプログラムは通常、複数の部分で構成されます。 典型的な.NETアプリケーションは、実行可能なアセンブリ、プログラムディレクトリのいくつかの アセンブリ、およびグローバルアセンブリキャッシュ のいくつかのアセンブリで構成されています。プログラムが実行されると、ランタイムはこれらのすべての部分をプログラムに結合します( )。コンパイル時のリンクはもはや ではありません。

しかし、時には、プログラムが1つのアセンブリに実行するために必要なすべての部分を組み合わせることが役立ちます。たとえば、 は、 プログラム、必要なすべてのライブラリ、およびすべてのリソースを単一の .exeファイルに結合することによって、アプリケーションの展開を簡素化したい場合があります。

http://www.codeproject.com/KB/dotnet/mergingassemblies.aspx

最後に、質問は広い分布のためのインストーラの構築についてであれば、月ウィレムBはWIXのサンプルを持っていますUsing WIX to create an installer: quickstart tutorial

0

はい、あなたが管理.NETを埋め込むためILMergeを使用することができますDLL!例here

関連する問題