解決策(B)の別のプロジェクトを参照するWindowsサービスプロジェクト(A)が奇妙な問題を抱えています。プロジェクトBには、ナゲットパッケージ(この場合はprotobuf-net)への参照があります。パッケージフォルダ内のパスを正しく参照しています。しかし、WindowsサービスプロジェクトAをビルドすると、コピーされるDLLは異なるバージョン(GACから来ている)です。NuGetパッケージフォルダの代わりにGACからコピーする参照プロジェクト依存関係
この問題を解決し、依存関係を正しくコピーしていることを確認するには、どうすればよい方法ですか。
パッケージフォルダ内の関連するフォルダを削除して、プロジェクトBを再構築しようとしましたが、この結果、ナゲットは自動的にファイルを再度ダウンロードしましたが、プロジェクトBのVisual Studioでの参照がGACの古いバージョンに更新されていました。 packages.configファイルで参照を削除してから、nugetを使用してパッケージファイル内の正しいパスを使用して更新する必要がありました。
サイドノート:GACにこれらのアセンブリを組み込む理由がない限り、GACからそれらをアンインストールするほうがよいかもしれません... NuGet経由で配布されるアセンブリは、通常、appとともにコピーされ、インストールされません。アセンブリの読み込みでは常にGACが優先されます。バージョンが正しくインクリメントされない場合、GACからのコピーが引き継がれます。 –
ええ、理由やそのアセンブリがGACで終了したかどうかはわかりません。しかし、ナゲットパッケージはv2.0.0を参照しており、GACはv1.0.0を持っています。少なくとも、奇妙で迷惑なことは言うまでもありません。 – Sivart
さらに奇妙なのは、プロジェクトBを参照する別のプロジェクト(C)があり、そのビルド/パブリッシュ出力に実際に参照されているアセンブリの正しいバージョンが含まれているということです。ちょうどこの1つのプロジェクトは問題を抱えているようです。 – Sivart