web-dev-qa-db-ja.com

C#でコンソールアプリケーションを展開する方法

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

VisualStudio 2008を使用してC#で記述されたコンソールアプリを展開するための信頼できるプラクティスは何ですか?

40
Dervin Thunk

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

あなたはcouldilmerge を使用してすべての依存関係を1つのexeファイルに入れますが、私はそのアプローチにやや不満です-I exe +依存関係dllに固執します。

41
Jon Skeet

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

ウォークスルー が役立つはずです。

12
brien

または、自己解凍型のZipファイルを使用できます。すべての通常ファイル(.exe、.dll、.configなど)をZipファイルにパッケージ化します。一時ディレクトリに抽出し、実行時抽出プログラムを実際のコンソールexeに設定します。

2
Cheeso

Wixインストーラーを使用してバンドルできます。コンソールアプリケーション、exe +依存DLL + nuget DLLの場合、それらを圧縮するだけで十分です。

0
alrightyy

VS08でセットアッププロジェクトを作成し、それにコンソールアプリプロジェクトのプライマリ出力を追加します。これにより、依存関係が解決され、.msiにパッケージ化されます。

0
SpaceghostAli