2

現在、私は 1 つのベース Web アプリケーションを持っています。それを「Framework.Presentation」と呼びましょう。このアプリケーションには、Web アプリケーションのすべての基本項目 (既定のコードといくつかの既定のテンプレート) が含まれています。複数の顧客のために、クライアント固有のコードとテンプレートを使用してこのベース アプリケーションを拡張したいと考えています。ベース アプリケーションは Subversion リポジトリであり、クライアントごとに異なる Subversion リポジトリが必要です。

私は次の構造を念頭に置いていました:

ClientProject
  - Framework
    - Framework.Presentation
  - ClientProject.Presentation

「ClientProject」はそれ自体がリポジトリであり、フレームワークリポジトリの外部があります。私の ClientProject.Presentation プロジェクトでは、Framework.Presentation プロジェクトにリンクします。

ただし、これは問題ではありません。

Framework.Presentation には、App_Data フォルダーにいくつかのテンプレートがあります。

App_Data
  - Templates
    - Default
      - All the files here

私のClientProject.Presentationでは、「デフォルト」フォルダーなしで同じものを追加できました。アプリケーションは、最初に を直接検索しApp_Data/Templates、その後にを検索しApp_Data/Templates/Defaultます。

また、Framework.Presentation には '/Admin' フォルダーがあり、ユーザーはここで Web アプリケーションの管理作業を行うことができます。

ClientProject.Presentation を発行すると、すべてのファイルが配置されます。しかし、VS2010 でアプリケーションをデバッグしたい場合、Framework.Presentation のファイルが ClientProject.Presentation プロジェクトのルート フォルダーにコピーされないため、すべての関数をデバッグすることはできません。また、アプリケーションはデフォルトのテンプレートを見つけることができません。

これをどのように解決できますか?

4

4 に答える 4

0

提案したように、ビルド前のイベントを使用して、すべてのファイルをFramework.PresentationフォルダーからにコピーすることができますClientProject.Presentation。しかし、これは厄介になるかもしれないと思います。例えば:

  • ファイル名の衝突をどのように処理しますか?
  • 誤ってSubversionにコミットしないようFramework.Presentationに、フォルダー内のファイルを除外する必要がありますか。ClientProject.Presentation
  • ClientProject.Presentationこれらのファイルを参照するようにプロジェクトを自動的に更新する必要もありますか?そうでない場合、どのようにビルドおよびデバッグされますか?もしそうなら、プロジェクトのリロードをどのように処理しますか?
  • クリーンビルド、ビルドサーバー統合、デプロイメントパッケージなどの追加ファイルをどのように処理しますか。
于 2012-11-16T13:13:02.887 に答える
0

Framework.Presentationプロジェクトによって参照されるDLLを作成できる可能性がありますClientProject.Presentation。フレームワークファイルを埋め込みリソースとして構成する必要があります。私はこれを試したことがないので、どれだけうまくいくかわかりません。

于 2012-11-16T13:05:47.103 に答える
0

ラッパーソリューションを作成します。これには、すべてのプロジェクトが含まれている必要があります。ビルド後のステップを追加して、すべてのコピーを実行します。あなたはあなたの問題に対する単純でクリーンな解決策を見つけるつもりはありません。MSBuildに精通していない場合は、すぐに理解できます。それは確かにあなたが望むすべてを行うことができます、それはただ退屈になるでしょう。

于 2012-11-19T06:39:42.010 に答える
0

OK、考えられる解決策は...

ClientProject.Presentationファイル構造を使用して、プロジェクトをソリューションに追加します。

プロジェクトを追加しないでくださいFramework.Presentation。代わりに、各ファイルをリンクファイルClientProject.Presentationとして個別に追加します。(-> 、ファイルを選択し、追加ボタンの下矢印をクリックして、を選択します)。AddExisting ItemAdd As Link

これにより、ファイルはファイルシステム内の適切な場所に保存されますが、IDEはそれらがソリューション内のどこにあるかを認識します。

Framework.Presentation唯一の欠点は、プロジェクトのサイズによっては、これがかなり面倒になることです。

于 2012-11-16T13:02:05.193 に答える