ソリューションエクスプローラでソリューションを右クリックし、[追加]> [既存のプロジェクト]を選択して一般的なプロジェクト.csprojファイルを参照すると、元の場所からソリューションに追加されます。
この2つの問題は、またはあなたのチームのサイズに応じて、問題があってもなくてもよいがあります
1 - 一般的なプロジェクトは、ソリューションファイルへの相対パスで、各溶液中に含まれます(IE:... \ CommonProject \ Common.csproj)。これは、すべての開発者が同じ作業ファイル構造を持つ必要があること、またはメインプロジェクトを開くときにエラーが発生することを意味します。
2 - このシナリオでは、共通のプロジェクトが複数のプロジェクト(例えば2つのAとB)によって参照され、プロジェクトAで作業する開発者は、共通のプロジェクトをタスクの一部として変更する必要があります。その開発者は、プロジェクトBを実際にチェックアウトしてコンパイルすることなく、変更がプロジェクトBを中断するかどうかを知ることはできません。ますます多くのプロジェクトが共通のプロジェクトを参照するにつれて、この事態の危険性は増大し、管理不能に陥ります。次のように
他のが言ってきたように繰り返しますが、これを行うには「正しい」方法はありませんが、しかし、私が取ったアプローチは次のとおりです。
1 - なクルーズコントロールなどの使用継続的インテグレーションは、の建物を管理します共通プロジェクトをサーバー上のスタンドアロンプロジェクトとして配置します。
2 - ソースコントロールの下に、作成された共通DLLを格納するディレクトリを作成します。ビルドマシンでこのディレクトリをチェックアウトし、共通プロジェクトがビルドされるたびに、出力DLLをDLLフォルダにコピーし、これらの変更をソース管理にコミットします。
3 - すべての開発者マシンとビルドサーバーで環境変数を使用して、共通のDLLフォルダの場所を制御し、ハードコードされたパスではなくその変数を使用してDLLを参照します。 (C:\ Source \ MyCommonProjectDLLSに変数MyCommonLocationを設定して、C:\ Source \ MyCommonProjectDLLS \ Common.dllではなくIEを使用します)
4 - 参照するプロジェクト共通DLLは、そのプロジェクトのビルドサーバーで共通DLLフォルダを監視するCIトリガを設定します。変更がコミットされるたびに、構築サーバーはすべての消費プロジェクトを構築する必要があります。
これにより、他のプロジェクトの変更が壊れているかどうかをすぐに知ることができます。唯一の欠点は、このモデルでは、消費するプロジェクトは、作成されるとすぐに共通のDLLに更新を加えることです。別の方法としては、ビルド時にソースコントロールリビジョンから共通DLLをバージョン化し、各バージョンを共通DLLフォルダの下にある独自のサブディレクトリに配置する方法があります。
共通のDLL -1.0.0.1234
-1.0.0.1235
-1.0.0.1236
そしてそうで
:だからで終わるでしょう。これの利点は、各プロジェクトが新しいバージョンのコードを参照するだけで、共通DLLへの更新をいつ受け取るかを選択できることです。しかし、これは両方の方法を削減します。これは、共通コードの古いバージョンが残っているプロジェクトがあることを意味する可能性があるため、最終的にそれらの変更を反映させる作業が増える可能性があるためです。
これが役に立ちます。
Visual Studioで "ファイルをリンクとして追加"オプションのような意味ですか? http://support.microsoft.com/kb/306234(編集:これは単に共有プロジェクトを使用しないことを前提としています) –
ソリューションに異なるプロジェクトを含めて、プロジェクトではなく、コンパイルされた.dll。私たちのソースコードリポジトリには、共有コード(主にクラスライブラリプロジェクト)を含むフォルダがあり、ツリーのまったく異なる領域のソリューションからそれらのプロジェクトを参照します。難しいことは、あなたのチームにこれを直感的に理解させるためにソースコード内にコードを配置する方法を考え出すことです。 (そしてそれを行う "正しい"方法はありません。それを設定する方法は非常に多くの要因に依存しますが、正しく計画するには時間がかかることがあります) – David
http://msdn.microsoft.com/en-us /library/1xhzskbe.aspx –