2013-06-17 7 views
7

私は、プロジェクト参照/ dll参照の手引きに関するガイダンスを探しています。Visual StudioソリューションプロジェクトリファレンスまたはDllリファレンス

状況によっては、複数のプロジェクトで使用されるユーティリティDLLがあり、一部のチームメンバーはプロジェクトで参照され、一部はdllで参照されます。

参照を投影する欠点がある:

  • は、DLLのは、持っているもう
  • 力のみんなをバージョン管理することができないので、
  • 紹介が速いアップデートに失敗溶液中であまりにも多くのプロジェクトで終わることができます彼らのコードのための同様のフォルダ構造

libフォルダの参照に欠点:

DLLが
  • デバッグを、それを使用してプロジェクトにずっと後に更新される可能性があるため、バグの発見を遅らせ
    • は作るには良い戦略でどうなるか、また日までのPDBファイル

    なしでは不可能ですすべてのプロジェクトがdllの更新プログラムで動作することを確認してください。ユーティリティが更新されるたびにbuild server firing dependencyビルドチェックを行う必要がありますか?

    私たちはSVNをソースコントロールとして使用しています。

  • 答えて

    4

    私たちはPeuczyńskiに似たようなことをしています。ソースツリーのルートの下に、ライブラリアセンブリのdll、pdb、およびxmlのdocファイルがすべて格納されたフォルダがあります(他のすべてのものと同様にバージョンが制御されています)。他のプロジェクトではそれらを参照しています(libプロジェクトやbinディレクトリには直接アクセスできない)。これにより、通常のソリューションの開発を妨げずにlibコードの作業が可能になります。 libコードが堅牢である場合にのみ、公式のlibフォルダ(すべてのdll、pdbs、およびxmlがどこに行くか)に '公開'されます。

    私たちはデバッグ版とリリース版の両方を持っていて、Visual StudioでLibsフォルダの下に3つのサブフォルダがあり、次のような名前のフォルダ:$(Configuration)Debug、およびReleaseライブラリdllへの参照を追加するときは、常に$(Configuration)フォルダからファイルを選択します。そのフォルダー名は、あなたがやっているビルドのタイプに応じて、DebugまたはReleaseフォルダーから実際にDLLを使用するようにVSをトリックします。

    +0

    あなたは、その中のすべてのライブラリdllとそのフォルダの中にroot \ libのような構造を持っています。そこには、root \ lib \ $ Configuration、root \ lib \ Debug、およびroot \ lib \ Releaseの3つのフォルダがあり、デバッグとリリースのファイル? –

    +0

    共有デバッグフォルダを使用すると、異なるチームが独自のデバッグバージョンで作業する方法はありますか? –

    +1

    @ JoshuaBarker - はい、libの下に3つのフォルダがあり、そのうちの1つは "$(Configuration)"と呼ばれ、文字通り括弧を含みます。 libがビルドされると、dll、pdb、xmlファイルがデバッグビルド用のデバッグフォルダにコピーされ、リリースビルド用のリリースにコピーされます。それらのうちの1つの内容は、VSをポイントするために何かを得るために$(Configuration)にコピーされますが、VSはDebugまたはReleaseでファイルを使用します。実際には$(Configuration)のファイルは使用されません。ほとんどの場合、「ゴールデン」コードには1つの共有Libsフォルダを使用するだけです。一時的な特別な必要性のために別のLibsフォルダを作成することができます。 – hatchet

    1

    私が使用しているアプローチは、dllプロジェクトのポストビルドイベントでサーバーにコンパイルされたdllをアップロードし、dllを使用するプロジェクトのビルド前のイベントでダウンロードします。これは私の経験からの最良のアプローチです。私がプロジェクト参照を使用したときに、時折エラーが発生しました(正しく更新されていないDLLコードでsthを覚えている限り)。

    このアプローチでは、dllプロジェクトコーダーはコードをいつ公開するかを決定します。

    3

    これを処理するために内部Nugetサーバーをセットアップしました。これは配布とバージョン管理を扱う簡単な方法でした。

    +0

    内部ナゲットでは、どうやってデバッグを処理しますか?また、dllが何かを壊したかどうかをチェックするときに、プロジェクトを一度に行いますか? –

    +0

    私たちは主に、サービス契約のdllを配布するために使用します。分散DLLをデバッグする必要がある場合は、Symbol Sourceのようなものを見ることができます。 (http://www.symbolsource.org/Public)。他のプロジェクトと比較してデバッグに関する限り、消耗しているアプリケーションは、準備が整うまで新しいバージョンにアップグレードしないので、変更を破っても問題ありません。本当のバグであれば、それを修正してパッケージを再デプロイしてください。 – Jason

    関連する問題