2

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 フォルダー。

4

1 に答える 1

2

プロジェクトではなく、ソリューションのレベルで libs ディレクトリをチェックアウトしてみてはどうでしょうか。これは、ライブラリ アセンブリが複数のプロジェクトで使用される傾向があるためです。1 つのプロジェクトのディレクトリ内に直接配置しても、高度に共有可能なリソースにはなりません。

SketchingMode solution
  SketchingMode proj
    bin
      Debug
      Release
  Libs
    SystemHooks
于 2008-12-29T16:09:08.940 に答える