2009-06-02 18 views
37

私は比較的複雑なコンソールアプリケーションをいくつかのDLLに依存しています。私はこれを最良の形で「出荷」したいと思います。私の好みの方法は、それに埋め込まれたすべての依存関係を持つexeファイルです(それほど大きくはない、約800K)。もう一つは、 "デバッグ"フォルダの内容を解凍して利用できるようにすることですが、すべてが利用可能になるかどうかはわかりません(すべての依存関係はデバッグフォルダを圧縮するだけで解決されますか?)C#でコンソールアプリケーションを展開する方法

VisualStudio 2008を使用してC#で書かれたコンソールアプリケーションを展開するための信頼できる方法はありますか?

+0

宛先マシンに.NETがインストールされていると想定するのは安全でしょうか?適切なバージョン? ...依存しているライブラリは、すでにそれらのマシン上のGACに存在する可能性がありますか? – jerryjvl

+0

@ jerryjvl:私は非常に広範なエラー処理環境を持っています。私が確かに知っている唯一のことは、すべてのユーザーがすべての環境テストのベースラインである.NET 3.5を持っていることです。 –

+0

コンソールアプリでクリックできませんか? –

答えて

39

Foo.exe、dlls、およびFoo.exe.configファイルをコピーするだけで大​​丈夫です。デバッグフォルダに何があるかを見てみましょう。おそらくあなたは.pdbファイルやFoo.vshost.exeを出荷したくないでしょう。他に何かありますか?出力フォルダにコピーされたコンテンツとしてマークされているアイテムがある場合は、それらも必要になります。

あなたは 1つのexeファイルにすべての依存関係を入れてilmergeを使用することができますが、私はそのアプローチのやや警戒心を抱いてよ - 私はexeファイル+依存関係のdllにこだわると思います。

+0

これを行う場合は、リリース構成を作成して、PDBが含まれていないことを確認する必要があります。 – brien

+2

リリースモードのコンパイルはどうですか? –

+0

http://msdn.microsoft.com/en-us/library/wx0123s5.aspx これは、デバッグシンボルとpdbファイルを使用せずにコンパイルする方法です。 – brien

12

Visual Studioでsetup projectsを調べる必要があります。依存関係を設定し、必要なDLLを含めることができます。最終結果は、setup.exeとMSIインストーラです。

ここにはwalkthroughが役立ちます。

+5

コンソールアプリケーション用のセットアッププロジェクト全体ですか?それはちょっと残忍ではないですか? –

+2

実際には、セットアッププロジェクトを作成するだけで、必要なdllとexeファイルをクライアントマシン上の適切な場所にコピーできます。 – brien

+1

Windowsインストーラパッケージを使用すると、インストール、パッチ適用、および削除を簡単に自動化できます。EXEのような他のソリューションでは、私は各マシンに座って物事をクリックします。それが私に任されていれば、私の会社はWindows Installerパッケージ以外のものとして公開されたソフトウェアのライセンスを決して購入しません。 –

0

はVS08でセットアッププロジェクトを作成し、これは依存関係を解決した.msi

2

でそれらをパッケージや自己解凍型ZIPファイルを使用することができ、それにコンソールアプリケーションプロジェクトの主な出力を追加します。すべての通常のファイル(.exe、.dll、.config、その他)をzipファイルにパッケージ化します。 tempディレクトリに展開し、実行時抽出プログラムを実際のコンソールEXEに設定します。

関連する問題