5

実際には (機能的に) 2 つのポータルから構成されている大きな ASP.NET アプリケーション (レガシー) があります。そのため、それぞれの開発を容易にするために、2 つの個別のアプリケーションに分割する必要があります。

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

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

それらの扱い方についてアドバイスをいただきたいです。私の主な関心事は重複を避けることなので、理想的には、それらは 1 つの場所にとどまり、両方のアプリで使用される必要があります。

最初に試したのは、あるプロジェクトから別のプロジェクトにファイルをリンクされたファイルとして追加することでした。これはコード ファイル (リンク先のプロジェクトに組み込まれます) では機能しますが、aspx / ascx または css / javascript / images では機能しません。最初に公開すると (コンテンツとしてマークされている場合、公開中にコピーされます)、開発中に常にこれを行うことはできません。また、アプリをデバッグしたり、ソース コードから実行したりするときに、そのようなファイルは見つかりません (sincve、リンクされたファイルを探しているときに、リンクされたファイルがアプリファイルツリーで実際に利用できないことは明らかです。

別の考えは、ビルド前のイベントを作成し、その中ですべての共有ファイルを共通の場所からコピーすることでした。たとえば、Common プロジェクトを作成し、そこにアプリケーション間で共有されるすべてのファイルを配置し、フォルダーに整理し、ビルド前にxcopy.

もう 1 つの考えは、すべての共有ファイルをsvn:external、両方のプロジェクトで参照する SVN リポジトリの一部にすることです。

しかし、すべてが私の少し面倒に見えます。誰かが同様の状況にありましたか?どのように対処しましたか?

私の提案について何かアドバイスはありますか?

4

2 に答える 2

0

今週、3 つのレガシー プロジェクトで 3 重化された css ファイルと javascript ファイルで同じ問題が発生しました。

2 つのプロジェクトからファイルを削除し、最初のプロジェクトにリンクされたファイルに置き換えましたが、Web サイトを実行すると、2 つのプロジェクトに属するページにない css および javascript ファイルの 404 エラーが発生しました。

そこで、ナゲット パッケージ'MSBuild.WebApplication.CopyContentLinkedFiles'をソリューションに追加するだけで、すべてが正常に機能しました。css ファイルと javascript ファイルが 2 つのプロジェクトに正常にデプロイされ、404 エラーが消えました。

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

この質問/回答も参照してください。

于 2016-11-10T22:03:45.847 に答える
0

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

css、js、画像などのリソースの場合、仮想ディレクトリのアプローチは簡単に思えます。また、ユーザーコントロールを共有するためにも気に入っています。

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

于 2013-02-05T15:26:35.323 に答える