作成日: 2024/10/11 最終更新日: 2024/10/11
文書種別
技術情報
詳細
NuGetパッケージのバージョンは依存関係の制約に反しない範囲であれば更新可能です。
依存関係の制約はnuget.orgのDependenciesタブをご確認ください。
たとえば、MESCIUS.ActiveReports.jaの18.0.0 は DS.Documents.Imagingの7.0.0 に依存していますが、8.0.0未満のバージョン(7.x.x)であれば更新可能です。
DS.Documents.Imaging (>= 7.0.0 && < 8.0.0)
ただし、更新が必要となる理由のあるパッケージのみ更新することを推奨します。
NuGetパッケージマネージャーの機能による一括更新はお勧めしません。
不必要にバージョンを更新すると、以下のような問題が発生する可能性があります。
開発環境のバージョンと一致していない場合、デザイナが正しく表示されない
開発環境にインストールしているActiveReports for .NETのバージョンと、NuGetパッケージのバージョンが一致していない場合、デザイナが正しく表示されない可能性があります。
具体的には、開発環境に初版(18.0.0)をインストールしている状態で、NuGetパッケージのみをhotfix(18.0.2)のバージョンに更新した場合、セクションレポートのデザイナを開いたときに以下のエラーが発生します。
ファイル内にデザインできるクラスがないため、このファイルのデザイナーを表示できませんでした。 ファイルの以下のクラスがデザイナーで見つかりました: SectionReport1 --- 基本クラス 'GrapeCity.ActiveReports.SectionReport' を読み込めませんでした。 アセンブリが参照されているか、およびすべてのプロジェクトがビルドされているかを確認してください。
また、前述のDS.Documents.Imagingのバージョンを更新した場合は、以下のエラーが発生します。
ファイルまたはアセンブリ 'DS.Documents.Imaging, Version=7.0.0.0, Culture=neutral, PublicKeyToken=d55d733d2bfd5065'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
本動作は仕様上の制限となります。
Visual Studioに組み込まれたデザイナが参照するアセンブリのバージョンにはリダイレクトの設定が適用されないため、エラーを回避する方法がありません。
実行時の動作には影響しませんので、デザイナが依存しているパッケージの更新が必要な場合は、レポートの編集が完了してから更新してください。
バインドリダイレクトの設定が大量に追加される
.NET FrameworkのプロジェクトでNuGetパッケージのバージョンを更新すると、App.configやWeb.configにバインドリダイレクトの設定が追加されます。
◆設定例
<dependentAssembly>
<assemblyIdentity name="MESCIUS.ActiveReports.Core.Document" publicKeyToken="cc4967777c49a3ff" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.6.0.0" newVersion="4.6.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DS.Documents.Imaging" publicKeyToken="d55d733d2bfd5065" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.2.3.0" newVersion="7.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
</dependentAssembly>
この設定が追加されること自体は正しい動作ですが、後から元のバージョンに戻す必要性が生じたとき、どの設定を残すべきか判断が困難になる場合があります。バージョンを戻したのにリダイレクトの設定が残っている場合、実行時にFileNotFoundExceptionやFileLoadExceptionなどの例外が発生します。
.NETのプロジェクトでは参照バージョンが自動的に決定される仕組みになっているため、上記のような問題は基本的には発生しません。
◆参考情報
ランタイムがアセンブリを検索する方法 - .NET Framework | Microsoft Learn
既定のプローブ - .NET Core - .NET | Microsoft Learn