0

私のソリューションには 42 の異なる Web アプリケーション プロジェクトがあり、それらをすべて 1 つの Web アプリケーションにマージしたいと考えています。これを行うための比較的痛みのない方法はありますか?

4

1 に答える 1

0

Visual Studio には、 Web アプリケーションWeb サイトの 2 種類の Web プロジェクトがあります。

Web アプリケーション プロジェクト (WAP) は、VS の他のプロジェクトと同じです。ビルド設定、プロジェクトに含まれるファイル、すべての優れた MSBuild のものを含む .csproj または .vbproj ファイルがあります。これらが同じ言語 (VB/C#) で多数ある場合、ほとんどの場合、すべてのファイルを 1 つのプロジェクトに追加するだけです。別々の言語を使用している場合、それらを組み合わせる方法はなく、別々のプロジェクトを維持するか、ある言語を別の言語に移植する必要があります。MSBuild は、プロジェクトごとに 1 つのコンパイラのみを呼び出します。(後で ILMerge を使用してアセンブリをマージできますが、すべてのプロジェクトのマークアップ ファイルを自分で結合する必要があります。)

Web サイト プロジェクト (WSP) は少し異なります。ファイルをプロジェクトにインクルードする限り、ファイル システムに何があるかを確認するだけです (一方、MSBuild ベースのプロジェクトは基本的に、インクルード ファイルのホワイトリストを持っているだけです)。また、WSP は MSBuild によってコンパイルされないため、1 つのプロジェクトに異なる言語を混在させることができますが、これを自分で構成する必要があります ( http://msdn.microsoft.com/en-us/library/ms366714を参照)。どのように機能するかについてのウォークスルーについては.aspxを参照してください)。

共通言語の WAP だけを扱っていて、維持するプロジェクトの数を減らそうとしていると仮定すると、統合されたプロジェクトに既存のファイルを追加し始めるよりもはるかに優れた戦略は考えられません。次のいずれかの問題が発生する可能性があります。

  1. 個別のプロジェクトはそれぞれ、独自の IIS アプリケーションのように動作します。これは、/bin フォルダー (つまり、任意のコード) に依存するもの、または~/URI を使用してそのプロジェクト内のコンテンツを参照するものにとって重要です。これにより、移動するサブアプリごとに MasterProject 内にフォルダーを作成するだけでは済みません。個別のプロジェクトを使用することを除いて、VSにはこれを回避するための適切な設計は実際にはありません(明らかにニーズを満たしていません...)。そのため、おそらくファイルを同じルート フォルダーに追加する必要があります。

  2. 重複するファイル名は整理する必要があります。または、web.config では、ファイル コンテンツをマージする必要がある場合があります。

  3. 競合するクラス名についても同様です。オーバーラップが多い場合は、とにかく別のライブラリにリファクタリングされることを願っています。

于 2013-04-05T21:48:41.687 に答える