私の日常業務ソリューションには、約 80 のプロジェクトがあります。このソリューションには、4 つの異なる Web サイト、ビジネス ロジック、およびインフラストラクチャ アセンブリ (拡張メソッド、さまざまなユーティリティ、リポジトリ基本クラスなど) が含まれています。
このソリューションは非常にうまく機能しますが、テスト プロジェクトをソリューションに追加すると、簡単に 100 を超えるプロジェクトを通過してしまい、このソリューションでの作業が非常に面倒になります。
解決策を探しているうちに、Nuget に非常に興味を持ち、それが役立つかどうか疑問に思うようになりました。
アイデアは、巨大なソリューションを小さなアトミック ピースに分割し、その出力がプライベート Nuget リポジトリにアップロードされる Nuget パッケージになるというものです。
Web サイトは、その特定の Web サイトにバインドされたクラス ライブラリ以外のパッケージを参照します。
CI の観点から:
各パッケージ ソリューションはアトミックである必要があります。
- その参照をフェッチできる必要があります (公式フィードとプライベート フィードの両方からの他の NuGet パッケージ)。
- 建てる
- テストを実行する
- パッケージを組み立てる
- 新しいパッケージをリポジトリにアップロードします
製品ソリューション (Web サイトなど) は、次の後にビルドする必要があります。
- コードのコミット
- プライベート リポジトリの NuGet パッケージの更新
なにか提案を?それとも、この巨大なソリューションの分割を達成するためのより良い方法でしょうか?