2009-04-18 18 views
7

バージョン管理システムで.NETプロジェクトのサードパーティ参照DLLをチェックするのに理想的な場所(ディレクトリ)は何でしょうか。通常、私はランタイムが自動的にこれらのファイルをピックアップできるように、それらをビンの下に置くために、ほとんどの人に見てきました。しかし、それは正しい方法です。バージョンコントロール.NETプロジェクトのサードパーティ製DLLの場所

私は当初、libという名前のbinと並行しているサードパーティ製のDLLをすべて含んでいる個別のディレクトリを作っていましたが、libディレクトリが実行時にピックアップされるようにアプリケーションの設定ファイルを変更する必要があります。ここでの私の考えは、libにサードパーティのdllが含まれ、binにはプロジェクトのバイナリ(DllまたはExeになる可能性があります)が入っているということです。

好ましい方法は、バージョンコントロール内の場所です。物理ファイルシステム。

+0

なぜこのことが懸念されますか? "当初私はサードパーティ製のDLLをすべて含むlibというbinと並行した別個のディレクトリを作っていましたが、libディレクトリが実行時にピックアップされるようにアプリケーションの設定ファイルを変更する必要があります。" –

+0

ディレクトリへのランタイムバインディングを行うことができると誰もが知っているとは思われません。最終的な目的はチームにそれを使用させることです。 –

答えて

12

は、我々は次のディレクトリ構造(on my blog可能な詳細)を使用します。これらはコンパイル時に各プロジェクトの "bin"フォルダに自動的にコピーされます。 ( "Libraries"フォルダはもちろんバージョン管理にコミットされています)

+0

私は別々のlibディレクトリを持ちたいという理由の1つは、VSがdllをbinディレクトリにコピーする方法が嫌いなので、dllの参照パスと実行時パスが同じ相対パスであることが必要でした。参考までに、これはすでにソリューションレベルで行っています。 –

+0

会社やオープンソースの他のプロジェクトのDLLがコードからサードパーティDLLを生成する場合はどうなりますか?そのプロジェクトはDLLを公開します。それで、そのプロジェクトはコードが変更されるたびに独自のDLLをコミットしますか? –

+1

@Munish Goyal:それは異なります。コードが頻繁に変更され、チームのすべての開発者が構築するのが簡単な場合は、ソースをバージョン管理にコミットし、ソリューションの一部として構築します。コードが頻繁に変更されたり、難しくなったり、ビルドに時間がかかったりすると(例えばC++だけど他のプロジェクトはすべてC#です)、そのサードパーティプロジェクトのメンテナーになるように1人の開発者を任命し、大きな変化。他のすべての開発者は、あらかじめ作成されたDLLを参照するだけです。ワークフローは、そのプロジェクトを簡単にどのように消費するかによって大きく異なります。 –

9

サードパーティのアセンブリが別のディレクトリに含まれていること(これにより、ソース管理での作業が容易になります)、プロジェクト内でこれらのアセンブリへの参照が作成されます。ビルド時に、サードパーティ製のアセンブリが\binにコピーされ、構成を変更する必要はありません。 「ライブラリ」フォルダ内([参照の追加]ダイアログで、「参照」タブを使用して)

Solution\ 
    Libraries\ 
    third-party DLLs here 
    Source\ 
    Project1\ 
    Project2\ 

各プロジェクトの参照アセンブリ:

+0

ええ、これは私がほとんどいつも見ている方法です。プロジェクト内のすべてのDLLを参照するルートディレクトリの下にある "Libraries"ディレクトリがあります。 – Noldorin

2

私は、これらのサードパーティのDLLがあなたのプロジェクトより多く使用されると想定しています。したがって、DLLをすべてのプロジェクトのビンの下に置くと、プロジェクトがあるだけでなく、エレガントではない多くのDLLコピー(VCS内に)があることを意味します。 Andrew H. mentionnedのように、DLLが本当に一般的であれば、共通のディレクトリに置かれ、必要な他のすべてのプロジェクトから参照されるはずです。第三の名前を変更されたことを中心に(今のところ)私が知っている

/common/ThirdPartyLibrary.dll (version 1.2)  
/common/ThirdPartyLibrary.dll (version 1.3) 

最善の方法:時間をかけて、あなたのようなもので終わる可能性があります。ここに 唯一の難点は、同じDLLの異なるバージョンを区別することができることです明示的なバージョン番号を持つサードパーティのDLLを参照してプロジェクト内の新しい名前を参照してください。そうすれば、プロジェクトは必ず正しいバージョンを参照します。 Like:

/common/ThirdPartyLibrary_v1.2.dll  
/common/ThirdPartyLibrary_v1.3.dll 
関連する問題