web-dev-qa-db-ja.com

外部DLLファイルを保存する場所は?

私のプロジェクトでは、いくつかのサードパーティライブラリを使用しています。 Visual Studioの参照フォルダーを使用してそれらを含めます。

しかし、DLL=ファイルを保存する必要がありますか?ファイルシステム内のパスから参照されますが、プロジェクトに含めることができればいいでしょう。

51
anon

これが私がすることです:

  • ソリューションレベルでlibフォルダーを作成する
  • すべてのサードパーティのDLL=ファイルをそこにダウンロードしてコピーします
  • Libフォルダーからの参照
  • これらのすべてのDLLファイルをsource controlに置きます。私は Subversion を使用しています。一回限りです。

ソリューションフォルダを追加してそこに追加することもできます。


更新2012-12-19

上記の答えは、 NuGet が初期段階にあったときでした。 FWIW、NuGetアイテムがある私のアプローチ:

  1. プレーンDLLファイルの依存関係(NuGet pkgがない場合)に対して上記のように実行します)
  2. ソリューションの「パッケージの復元」を有効にします
  3. 変化する packages.configファイルを特定のパッケージにバージョンをロックダウンする必要がある場合
  4. パッケージ自体をバージョン管理システムに保存しないでください( GitMercurial などに無視を設定します)

実際、NuGetを使用して内部依存関係を管理し、プライベートフィードを持っています。

64
Aliostad

通常、私のプロジェクトの構造は(少なくとも)次のようになります。

projectname
   - trunk
       - src
       - lib
   - support
       - docs
   - releases

trunkフォルダーには、現在作業中のソースのコピーが含まれています。また、プロジェクトによって参照されるすべてのサードパーティアセンブリを含むディレクトリ「lib」があります。
(その位置でアセンブリを参照します)。

「リリース」フォルダには、トランクのブランチが含まれています。たとえば、v1がリリースされると、アプリケーションのバージョン1をビルドするために必要なソースコードとそのすべての依存関係のコピーがあるように、トランクからブランチが取得されます。 (これはバグ修正に便利です。そのブランチのバグを修正し、トランクに修正をマージし、そのブランチを再構築すると、アプリケーションのv1が修正されます)。

これらはすべてソース管理に組み込まれます。 (はい、参照アセンブリも同様です)。そうすることで、他の同僚がプロジェクトに取り組む必要がある場合でも非常に簡単です。彼はソース管理から最新バージョンを取得するだけで、彼(または彼女)はコンパイルとビルドができるようにすべてを準備しています)。

(これは CruiseControl のようなものを continuous integration に使用する場合にも当てはまることに注意してください。).

9

NuGet を見てください。これはVisual Studio 2010のパッケージ管理拡張機能であり、目的に合わせて設計されています。

4
Antony Scott

DLLへの参照のためのVisual Studioのプロパティウィンドウには、「ローカルコピー」と呼ばれるプロパティがあります-これをtrueに設定すると、ローカルプロジェクトのbinディレクトリにコピーされます

4
Dean Chalk

NuGet (Visual Studioのパッケージマネージャー)をご覧ください...

NuGetは、Visual Studioでオープンソースライブラリとツールを簡単にインストールおよび更新できるVisual Studio拡張機能です。

次に、このNuGetドキュメントを読んで、クレームドラクレームを取得します。

ソース管理にパッケージをコミットせずにNuGetを使用

4

これに適切に答えるには、環境ワーキングセットを区別する必要があります。

環境:

  • これは、ソリューションの構築に必要なすべてのツールとライブラリです。
  • 環境内の物事は、合理的に一定のままであることが期待されます。
  • 通常、環境内のものはバージョン管理されており、複数のバージョンを並べて使用できるはずです。
  • 通常、環境内のものはライセンスされています。
  • 環境はソース管理下にありません。
  • 良い例はVisual Studioです。

ワーキングセット:

  • これは基本的にあなたのソースコードです。
  • 最終的な実行可能ファイルを取得するために必要なすべての要件です。
  • 開発中にワーキングセットが大きく変わることを期待してください。
  • ワーキングセットはソース管理下にある必要があります。

コンポーネントが適合するカテゴリを決定する必要があります。

1
Nobody

個人的には、サードパーティDLLのソース管理にフォルダー(各会社、組織用のフォルダー)があり、そこから参照します。

これらのファイルは、ソースをダウンロードするすべての開発者が利用でき、簡単に更新できます。

1