18

私はCommonUtils libを持っており、いくつかのプロジェクトからファイル参照するdllに組み込みました。CommonUtils は、ファイル参照として設定された log4net.dll と、CommonUtils.dll のビルド時に copy-local=true に依存します。log4net.dll と CommonUtils.dll は GAC にありません。

CommonUtils.dll へのファイル参照しかない MyWorkingProject ですべて正常に動作します。log4net.dll が出力ディレクトリに表示されます (CommonUtils.dll の依存関係ですが、MyWorkingProject からは参照されないため)。ただし、新しいプロジェクトを作成していくつかのユニットテストを追加する場合: MyWorkingProjectTest とプロジェクトが MyWorkingProject を参照し、ここで CommonUtils.dll をファイル参照し (CommonUtils の一部を使用したい)、両方のプロジェクトで依存関係にある log4net.dll をビルドすると、参照とファイル参照も出力ディレクトリにコピーされません。

ここで何が起こっているのか誰でも明確にできますか? コンパイラは、取得する必要がある log4net.dll ファイルを認識していませんか? ここで私が間違っていることはありますか?log4net.dll を明示的にコピーするには、他の方法でこれを行う必要がありますか? log4netを明示的に参照しなければならないというのは意味がありますか?

4

3 に答える 3

2

これは仕様によるものです。参照の自動継承が引き起こす影響について考える必要があります。参照がどうあるべきかを論理的に見ることはできますが、コンパイラにはそのような描写はありません。理論的には、依存関係ツリー全体をたどれば、フレームワークと OS のかなりの部分を再現することになる可能性があります。

それは間違いなく苦痛であり、私はあなたの欲求不満に同意し理解していますが、マイクロソフトはそうでなければこれを行う論理的な方法を見つけることができなかったと思います.

于 2008-12-18T18:42:55.910 に答える
1

プロジェクトの参照としてlog4netを追加しないと、コピーされないと思います。

于 2008-12-17T15:51:34.493 に答える