0

Visual Studio 2008 には、ソリューションにProjectAProjectBの 2 つのプロジェクトがあるという依存関係の問題があります。ProjectAにはProjectBの参照があり、ProjectBにはCopy Localに設定されたサード ライブラリ パーティの参照があります。

これで、ProjectAがビルドされるときに、 ProjectBによって参照されるサード パーティ ライブラリがProjectA出力にコピーされません。

何か見逃していましたか、それともこれがデフォルトの動作ですか? 私が直面している問題は、GAC にこのサードパーティ ライブラリがないマシンにアプリケーションをデプロイすると、依存関係の例外がスローされることです。

4

1 に答える 1

1

MSBuild の動作は非常に単純です。次の場合に、参照プロジェクトの出力アセンブリの依存関係をコピーします。

  • 参照で Copy Local が True に設定されている
  • 依存関係は、参照のメタデータから見つけることができます。これにより、Assembly.Load() などの異常な方法で読み込まれた場合に、依存関係がコピーされるのを防ぐことができます。
  • 依存関係は、ビルド時の参照と同じディレクトリに存在します。なんらかの理由で存在しない場合、警告はありません
  • 依存関係が GAC に登録されていません

最初の 3 つの箇条書きのいずれかを見逃した場合は、ソリューションをデバッグすることもできません。4 番目の箇条書きに注意してください。質問の最後の文と一致しているようです。

于 2012-12-01T10:59:44.820 に答える