.NET Frameworkを扱うようになって何年経ったことでしょう。
弊社では、初期段階から開発にVisualStudio.NETを導入したため、
VS.NET2002、VS.NET2003、VS.NET2005と納入実績もそれぞれ存在します。
特に多く扱ってきた中小規模のシステムの場合、業務ロジックで1つから3つ、
ユーザーインターフェースで1つといったプロジェクト構成にして
全てのプロジェクトを1ソリューションにまとめてしまう方法が
競合なども発生せずにコンパイル(ビルド)がスムーズに行きます。
Exeによって参照しているDLLのバージョンが違うなどということはありえません。
しかしここ立て続けに古いシステムの改修を行うことがありました。
これらはそれぞれ機能単位でプロジェクトが分かれており、
少なくとも50以上のExeもしくはWebアプリケーションが存在するというものです。
開発当初は、このシステムのコンパイルのためだけにマシンをインストールし、
何十分もかけてコンパイルを行うということを行っていました。
いくつかの業務ロジックのみがプロジェクト参照ではなくDLL参照となっており
競合が発生することもしばしば。
VisualStudioを起動するだけでも数十分。さらにそこからコンパイルで数十分。
単なる改修のためにそこまで時間をかけることはさすがに避けたいところでした。
今回、幸いにもいずれの改修も各機能単位のみでの修正でした。
こういったときには、共通のDLLなどをコンパイルしなおす必要はありません。
であれば、単独のプロジェクトのみをVisualStudioで起動し、
その1機能のみをコンパイルすればよいわけです。
この場合、1プロジェクトに複数機能が存在しているソリューションよりも
各機能単位でプロジェクトが分かれているほうがメンテしやすくなります。
こうやって考えてみると、規模が大きくなればなるほど、
実際にはプロジェクトを細かく分けるべきなのではないか?と考える次第です。
やはりプロジェクトの単位を決める際には、全体像を良く見て考えるようにしましょう。