ソリューション ファイルに 20 個のプロジェクトがあります。プロジェクトの 1 つは、すべてのプロジェクトが参照する標準ライブラリ プロジェクトです。
約 1 年前、新しい nuget パッケージを追加しました。これをPackage A
バージョン 5.0.0.0 と呼びます。コンパイル時に転送されるファイルがたくさんありましたが、最終的には対処しました。パッケージを標準ライブラリ プロジェクト (他の 19 が参照するプロジェクト) に追加しました。
私はNugetを初めて使用するので(おそらく何か間違ったことをしたのかもしれません)、のヘルパーとして機能する新しいパッケージを作成しましたPackage A
。ヘルパーがバージョン 3.0.0.0 から 5.0.0.0 に依存するようにすべてを設定しましたPackage A
(したがって、私たちよりも低いバージョンの他のユーザーでも機能します)。この新しいパッケージを呼び出しましょうPackage A helper
インストールするPackage A helper
と、すべてが正常に機能しています。プル リクエストを実行すると、ソリューション内のすべての app.config が
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Package.A" publicKeyToken="8FC3CCAD86" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
それがなくても問題なくコンパイルされますが、ビジュアルスタジオは不平を言って警告を出します。何を与える?私のマネージャーは、app.config にあまりにも多くのノイズを追加し、パッケージ A に依存しすぎているため、コードをマージすることを許可しません。
インストールする前に主な依存関係が既に満たされているのに、依存する nuget パッケージを追加すると、Package A
この新しい bindingRedirect が必要になるのはPackage A Helper
なぜですか?
そして、ナゲットパッケージとpackage.configで3.0.0.0-5.0.0.0を指定したときに、なぜ0.0.0.0-5.0.0.0と言うのですか
アップデート:
Package A helper
バージョン 5.0.0.0 への参照を使用してビルドするとPackage A
、すべての bindingRedirects がすべての app.config で自動入力されず、代わりに警告が生成されます。最小の依存関係でビルドするのが最善だと考えたので、最初は 3.0.0.0 でビルドしました。Visual Studio は依然として警告を発し、bindingRedirects が作成されることを示唆しているため、問題は依然として存在します。
No way to resolve conflict between "Package A, Version=5.0.0.0, Culture=neutral, PublicKeyToken=83hfhsd33" and "Package A, Version=3.0.0.0, Culture=neutral, PublicKeyToken=83hfhsd33". Choosing "Package A, Version=5.0.0.0, Culture=neutral, PublicKeyToken=83hfhsd33" arbitrarily.
Consider app.config remapping of assembly "Package A, Culture=neutral, PublicKeyToken=83hfhsd33" from Version "3.0.0.0" [] to Version "5.0.0.0" [path to Package A dll] to solve conflict and get rid of warning.
私のnugetパッケージの依存関係を3.0.0.0から5.0.0.0に変更し、5.0.0.0を許可して私のpackages.configを取り除くだけの解決策allowedVersions="[3,6)"
ですか? nuget パッケージの有用性と下位互換性を低下させたくありませんが、同時に、メイン ソリューションに必要な警告や bindingRedirects を必要としません。
更新 2:Copy Local
参照プロパティを設定してFalse
実際に問題を解決しましたが、その理由がわかりません。