2013-02-05 20 views
5

実際に(機能的に)2つのポータルから構成される大きなASP.NETアプリケーション(レガシー)があります。だから私はそれらのそれぞれの開発を容易にするために、2つの別々のアプリケーションに分割する必要があります。2つのアプリケーションでASP.NETアプリケーションを分割する - 共有ページ/ユーザーコントロール/スクリプトの処理

もちろん、2つの機能には共通の機能があります。それらのうちのいくつかはDALとBLにあり、それは問題ではありません。そのコードは両方のアプリケーションで参照されるアセンブリを構成する独立した別々のプロジェクトでした。

しかし、いくつかのページでは、ユーザーコントロールの数が多く、2つの「ポータル」(アプリケーション)間で共有されるいくつかのCSSとjavascriptファイルが問題です。

私はそれらをどのように扱うべきかアドバイスをお願いしたいと思います。私の主な関心事は、重複を避けることです。理想的には、それらは単一の場所にとどまり、両方のアプリケーションで使用されるべきです。

まず最初に、あるプロジェクトから別のプロジェクトにリンクファイルとしてファイルを追加しようとしました。これはコードファイルで動作しますが(リンク先のプロジェクトに組み込まれています)、aspx/ascxやcss/javascript/imagesでは使用できません。最初に公開すると(コンテンツとしてマークされていると、公開中にコピーされます)、開発中にこれをいつでも行うことはできません。アプリケーションがソースコードからデバッグ/実行されると、

別の考えでは、プレビルドイベントを作成し、すべての共有ファイルを共通の場所からコピーすることにしました。 私はプロジェクトCommonを作成し、アプリケーション間で共有されているすべてのファイルをフォルダにまとめ、プレビルドすると、私はxcopyを実行します。

また、すべての共有ファイルをSVNリポジトリの一部にすることもできます。私はで参照しています両方のプロジェクトで

しかし、私は少し煩わしいようです。誰にも似たような状況がありますか?どのように扱ったのですか?

私の提案のアドバイスはありますか?

答えて

0

あなたは、少なくとも、2つのオプションがあります。

仮想ディレクトリのアプローチは、CSSのようなressourcesのために簡単なようです、js、画像。 私はまた、ユーザーコントロールを共有するのが好きです。

ライブラリアプローチではより多くの作業が必要ですが、長期的にはコントロールの再利用性が向上します。

+0

アドバイスありがとうございました – bzamfir

+0

最初の提案は私のシナリオにとって最良のようです(ユーザーコントロールを再利用する必要はないので、意味がありません)。しかし、私は2つの問題があります:1. IIS Expressで動作させることができますか? 2.私はすべてのパス、仮想ディレクトリを指すように私のすべての画像、CSSとスクリプトを参照して変更する必要があるようだ。簡単なタスクではなく、アプリケーションに数百ページがあることを示しています。質問1のために – bzamfir

+0

@bzamfir、私は知らないと言う必要があります。質問2については、あなたの組織によって異なります。あなたのリソースが少数の場所にある場合、ページ内のパスを変更することなく、/ imagesまたは/ cssを仮想にすることができます。 – jbl

0

今週は、3つのレガシープロジェクト全体で3倍のcssファイルとjavascriptファイルを使用して同じ問題が発生しました。

私は2つのプロジェクトからファイルを削除し、リンクされたファイルで最初のプロジェクトに置き換えましたが、ウェブサイトを実行したときに2つのプロジェクトに属するページにCSS & JavaScriptファイルがありません。

私は単純に私のソリューションに'MSBuild.WebApplication.CopyContentLinkedFiles'というナゲットパッケージを追加したところ、2つのプロジェクトでCSSとjavascriptファイルがうまく展開され、404エラーが消えました。

共有されている.aspx/.ascxファイルがありませんでしたが、それでも機能すると思います。

も参照してください。question/answer

関連する問題