2009-12-10 9 views
9

Visual Studio 2008で開発された3つの異なるプロジェクト(UIの場合はBOの1つ、DALの場合)のASP.NET Webアプリケーションがあります。Visual Studio 2008:多くのプロジェクトでソリューションから単一のDLLを作成

すべての3つを保持する1つのアセンブリファイルを生成するにはどうすればよいですか?これで、ソリューション内のプロジェクトごとに3つのDLLが生成されます。

+0

n-tierプロジェクトを持っているという目的を捨てないのですか? – slugster

+2

デプロイしやすいでしょうか? –

+1

また配布も。 –

答えて

7

実際にVS2008にこの機能があるかどうかわかりません。しかし、あなたは確かにVSの外でそれを行うことができます。

例えば:
Merging .NET assemblies using ILMerge

17

はnetmoduleまたはアセンブリを作成してコンパイル/単一のアセンブリにそれらすべてをマージします。

第1の代替案。これはJay R. Wrenによって提案された:

これはかわいいハックですが、CSCとVBCとの両方/target:module/addmoduleオプションをサポートしている、あなたは実際にはシェルスクリプトを使用してILMergeせずにこれを行うことができますまたはファイルを作成します。

Visual Studioは "netmodule"タイプをサポートしていませんが、MSBuildはサポートしています。

ソリューションにVBプロジェクトを追加します。プロジェクトをアンロードし、プロジェクトファイルを編集します。

変更OUTPUTTYPE、モジュールに:

<OutputType>module</OutputType> 

代わりの目的のプロジェクトへの参照を追加することを、我々はモジュールを追加します。悲しいことに、ここでもVStudioは失敗しますが、MSBUILDはうまく動作します。プロジェクトをアンロードし、プロジェクトファイルを編集します。 AddModulesインクルードディレクティブを含むアイテムグループを追加します。

<ItemGroup><AddModules Include="..\VbXml\bin\Debug\VbXml.netmodule" /></ItemGroup> 

これは単にメーカーが管理しない参照項目のグループのように、/addmoduleディレクティブを使用するCSCを伝えるためのMSBuildを教えてくれます。

主な欠点:追加されたモジュールのVisual Studio Intellisenseはありません。私たちはすでにリファレンスを持っていますが、私たちはモジュールを持っていません。 [更新日:@Ark-kunは他の場所で指摘されているため、Visual Studioは.netmoduleプロジェクトを参照し、Intellisenseを参照できます。 ]

SharpDevelopには最初のステップがありますが、2番目のステップである「Add Module」GUIはSD 2.0以降の優先度の低いアイテムとして公開されています。

第2の方法。このgreat article(Scott Hanselman)は、Visual Studioを使用している場合に自動的にアセンブリを作成する方法について説明しています。 は、最初の代替品とは異なり、IntelliSenseサポート を提供します。

第3の方法です。 scで手動で実行してください。単一のDLLにいくつかのモジュールとリンクのテーマを作成する方法
例:

csc /t:module RarelyUsedTypes.cs 
csc /out:AllTypes.dll /t:library /addmodule:RarelyUsedTypes.netmodule AllTypes.cs 

詳細についてはリヒターの本CLR via C#を参照してください。

+1

3つの方法すべてが1つのアセンブリを生成します。しかし、2番目の方法では1つの**ファイル**しか得られません。 –

関連する問題