Subversion リポジトリに保存されているプロジェクトがあります。
このリポジトリの別のフォルダーには、多くのプロジェクトで使用する一連のライブラリがあります。これらのライブラリは、バイナリ ファイルとして保存されます。dll、pdb、および xml です。
レイアウトの例を次に示します。
<repo-url>
\Libraries
\SQLite
\SystemHooks
\Moq
アプリケーション プロジェクトでは、「libs」ディレクトリを追加し、そのディレクトリに svn:externals 参照プロパティを追加して、必要なライブラリを取り込みます。
たとえば、私が現在取り組んでいるこのプロジェクトでは、この質問が促されました。SystemHooks ライブラリが必要なので、アプリ プロジェクトのフォルダー構造では、次のようになります。
SketchingMode <-- solution folder, other projects here as well
SketchingMode <-- app project folder
libs
SystemHooks
これの良いところは、ライブラリをより簡単に更新できることです。外部定義に -rXYZ 指定子を使用するだけで、受け入れる準備ができているよりも新しいバージョンを取り込むことを回避でき、各ファイルのコピーは 1 つだけです。私のリポジトリのバージョン。
この特定の場合の悪い点は、SystemHooks ディレクトリ内の dll の 1 つ (pdb も必要な場合は 2 つ) を、プロジェクトによって参照されるのではなく、出力ディレクトリにコピーする必要があることです。
参照は通常どおり機能しますが、このディレクトリ内のファイルの 1 つに「コンテンツ」および「常にコピー」または「新しい場合はコピー」のタグを付けると、libs および SystemHooks ディレクトリ構造も出力ディレクトリにコピーされます。
そのため、ビルド後、ディスク上のディレクトリ構造は次のようになります。
SketchingMode <-- solution folder, other projects here as well
SketchingMode <-- app project folder
libs
SystemHooks
bin
Debug <-- main build output here
libs
SystemHooks <-- 1-2 files in here
これを回避する唯一の方法は、ビルド後の手順を使用して、必要なコピー ステートメントを追加することだけですか? または、そのような完全な構造をコピーしないように、プロジェクト ファイルを微調整することはできますか?
明確にするために、bin\Debug ディレクトリに libs\SystemHooks の別の層は必要ありません。また、現在 bin\Debug\libs\SystemHooks フォルダーにコピーされているすべてのファイルを、代わりに bin\Debug フォルダー。