web-dev-qa-db-ja.com

Visual Studioで複数のプロジェクト/ソリューションを操作する最良の方法は?

現在、独立したプロジェクトである4つのソリューションがありますが、アプリケーションのいくつかの領域に関しては、かなりの重複コードがあります。

現時点では、それは単にいくつかのフォームとそれに関連するコードです。

何かを変更または改善したい場合は、関連するすべてのプロジェクトにコピーして貼り付ける必要があります。

.dll/classライブラリのソリューションの1つで新しいプロジェクトを作成することを検討しましたが、これは正しくないと感じました。 (私が間違っている場合は言ってください)。

これはすべてのアプリケーションのコンポーネントであるため、.dll/classライブラリの新しいソリューションを作成することにし、共有コードをそこに移動することを検討しています-しかし、これまでこのルートをたどったことがないので、私の選択肢は何ですかここから?

簡単な変更を加えてすべてのプロジェクトで更新する必要がある場合、または代わりに、Visual Studioの別のインスタンスで、外部の共有コンポーネントで常に作業している場合は、このソリューションを他のソリューションに含めることができますか?それを使用するアプリケーション?

23
Wil

これは、この状況を処理するためのまさに正しい方法です。

ソリューションを右クリックして[既存のプロジェクトの追加...]を選択すると、プロジェクトを複数のソリューションに含めることができます。

その後に行った変更はすべてのソリューションに表示されます。これがもたらす唯一の問題は、あるソリューションを別のソリューションから切り離すことができるということです。ここで、ソース管理へのコミットに基づく自動ビルドが独自に登場します。

16
pdr
  1. 共有コードをクラスライブラリとして別のソリューション/プロジェクトに配置し、
  2. 共有プロジェクトのビルド後のイベントで、dllを特定のディレクトリにコピーします。
  3. このディレクトリから他のプロジェクト/ソリューションに共有dllを追加します

コンシューマープロジェクトをビルドするたびにこれを行うことで、コンシューマープロジェクトは最新のdllを自動的に使用します。

10
Afshar Mohebbi

共通コードを別の共有アセンブリに移動することは、優れたオプションです。

考慮すべきことの1つは、共通のビジネスロジックまたはビジネスオブジェクトタイプのコードを、カスタムコントロールなどのUI関連のコードとは別にすることです。2つの共通のアセンブリが必要な場合。これは最初はより多くの作業ですが、UIを変更したり、使用しているコントロールスイートを変更したりする必要がある場合は、さらに簡単になります。

3
slugster