質問: 私はいくつかのクラス、メソッド、情報を共有する複数のWebサイトを構築しています。これを行うための最良の方法は何ですか? アプリケーションは`razor pages`を使用して`asp.net core 2.2`書かれてい`razor pages` 。計画は、次のように複数のWebサイト/ドメインとコードを共有することです。 ``` - components - models - some pages - partials - custom tag helpers - dbcontext ``` しかし、すべてのドメインにも独自のソースがあります。 ``` - styling (sccss) - (external) libraries (like javascript plugins) - some additional domain-specific pages - appsettings.json - _layout.cshtml ``` データベース(EFコア - DBコンテキスト)、および多数の静的ファイル(イメージ)が共有されます。しかし、ドメイン/ウェブサイトごとにクッキーとセッションデータを設定する必要があります。 現時点では必要ありませんが、将来は複数のドメインでログインセッションを共有したいと思うかもしれません。 すべてのコードを再構築する必要なしに、dllの共有セットを使用して単一のドメインのみを更新できればいいでしょう。
回答: 何時間もの研究と試行錯誤が、部分的な解決策をもたらしてくれました。まず`DbContext` 、共有ページ/モデル/クラス/タグヘルパー/エクステンション/スタイルなどを使って、プロジェクトを`Razor Class Library (RCL)`に`DbContext`ました。もう1つのプロジェクトには、私の「ドメイン固有のオーバーライド」が含まれています。それはかなりうまくいきます。 **ガイド** 1. 私のRCLを作成するために、私はこれを使いました: 再利用可能なUIを作成する(もちろん...) 2. インターフェイスとDbContextを登録するために、私はこれを使いました: サービスを注入する方法... 3. そして、「静的な」ファイル(JS / CSS)を埋め込むために私はこれを使用: 静的リソースを含みます 最後にやることは、私の共有RCLのdllをウェブサーバーに登録して、異なるドメインプロジェクトをドメインにアップロードすることです。まだ行っていませんが、それは非常に簡単なようです。 この解決策は私の期待を満たしていますが、おそらくそれは最善の方法ではありません。他の解決策を投稿してください。