11

複数の Web プロジェクトを含むソリューションがあり、それらのいくつかに存在する必要があるページがいくつかあります。そのため、aspx ファイルを含み、他の Web プロジェクトから参照できる何らかの共有プロジェクトが必要になります。

現在、いくつかの実装があります。

共有プロジェクトを構築し、出力 aspx をホスト プロジェクトにコピーし、aspx の dll を参照することを含む、ScottGu によって記述された1 つの実装。この方法には、apsx が変更された場合、再コピーする必要があるという欠点があります。

David Ebbo の投稿に基づく別のオプションは、aspx をカスタム コントロールとして参照できる ascx-es に変換し、それらの custom-control-aspx-es を一部のプレースホルダー ページ内のホスト プロジェクトに含めることです。しかし、私の懸念は次のとおりです。すべての apsx ページを ascx に変換できますか? たとえば、ユーザー コントロールに Page.LoadComplete イベントがないことを意味します。

さらに別のオプションとして、Microsoft KB 記事で説明されているように、共有 Web プロジェクトにマップされる仮想ディレクトリを使用することもできます。この方法の問題点は、共有 aspx-es が事前定義されたディレクトリ (仮想ディレクトリ) にある必要があることです。仮想ディレクトリの名前が物理ディレクトリと重複する場合、仮想はそれをオーバーライドし、後者のページは使用できません。これら2つを一緒にマージすることはおそらく可能ですか?

何かご意見は?前もって感謝します PS 共有ページのデバッグはどうですか?

4

4 に答える 4

4

.ascx コントロールを含む共有クラス ライブラリを作成することで、この問題を解決しました。.aspx ページから .ascx コントロールに変換するときに実際の問題は見つかりませんでした。このサンプルは、ScottGu によって非常にシンプルで開始するのに適した場所で見つかりました。http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx .

于 2011-04-07T07:32:17.813 に答える
1

私たちが使用している解決策は、 ScottGu の方法です。これには、aspx ファイルを共有プロジェクトからホスト プロジェクトにコピーすることが含まれます。

共有プロジェクトのビルド後のイベントは、次のようにファイルをその場所にコピーします

xcopy "$(ProjectDir)Forms\Techs\AddEditTech.aspx" "$(SolutionDir)..\TTAdmin\Forms\Companies"  /i /d /y
if errorlevel 1 goto BuildEventFailed

xcopy    ....

goto BuildEventOK

:BuildEventFailed
echo POSTBUILDSTEP for $(ProjectName) FAILED
exit 1

:BuildEventOK
echo POSTBUILDSTEP for $(ProjectName) COMPLETED OK
于 2011-04-07T07:07:06.377 に答える
0

サービス指向開発を検討しましたか?共有できるサービスに機能を組み込みます。ウィジェットのような機能を構築します。このように、コードベースは1つだけですが、複数のサイトで使用できます。

(.Netボックス)の外側を考える

于 2011-03-25T16:26:43.757 に答える
0

Page から継承するクラスに機能をベースクラス化し、それらのクラスを共有 DLL に配置することを考えましたか。すべての実装アプリケーションは、そのページから継承することによってそのページを実装できますが、基本クラスがオーバーライド可能なメソッドを提供すると仮定して、機能を変更することができます。多くのアプリケーションで使用され、すべてが同じコードを持つ多くのページがあったとき、私はこれでかなり成功しました。ただの可能性。

于 2011-03-24T15:10:52.523 に答える