「LoadFromContext」への対処方法

'***' というアセンブリは LoadFrom コンテキストを使用して '***.dll' から読み込まれました。このコンテキストの使用は、シリアル化、キャスト、および依存関係の解決に対して予期しない動作の原因になる可能性があります。ほとんどの場合、LoadFrom コンテキストを使用しないことを奨励します。代わりに、グローバル アセンブリ キャッシュまたは ApplicationBase ディレクトリにアセンブリをインストールすることによって、およびアセンブリを明示的に読み込んでいるときに Assembly.Load を使用することによって同じ動作を行うことができます。」というエラーが検出されることがあります。

この問題は指示通りグローバル アセンブリ キャッシュ (GAC) に、アセンブリをインストールすることで解決できます。

グローバル アセンブリ キャッシュ (Global Assembly Cache : GAC)

.NETのバージョンによって、次の場所にあります。

  • .NET Framework 4より前 … %windir%\assembly\GACGAC_32GAC_64
  • .NET Framework 4以降 … %windir%\Microsoft.NET\assembly\GAC_32GAC_64
グローバル アセンブリ キャッシュ | MSDN

エクスプローラから%windir%\assembly\GACへアクセスできないときには、コマンドプロンプトを用いるか、他のファイルマネージャからC:\Windows\assemblyへアクセスします。c# - Why I cannot access the C:\WINDOWS\assembly\GAC Folder? - Stack Overflow

グローバル アセンブリ キャッシュへのインストール

インストールは、Gacutil.exe (グローバル アセンブリ キャッシュ ツール) で行えます。それには[開発者コマンド プロンプト]を管理者権限で起動し、例外の追加情報で「'***.dll' から読み込まれました」と報告されたファイルのパスを指定して、

C:\>gacutil /i C:/***.dll

のように実行します。Gacutil.exe (グローバル アセンブリ キャッシュ ツール) | MSDN

指定されたファイルが見つかりません。」としてエラーとなるときには、指定したDLLの存在を確認します。それが一時フォルダ内にあるならばデバッガの終了時に削除されるため、再度実行した上で試行します。

アセンブリが正しくインストールされたことは「l」オプションと、例外の「'***' というアセンブリは」の'***'に記載されているアセンブリ名を指定して、

C:\>gacutil /l アセンブリ名

グローバル アセンブリ キャッシュには次のアセンブリが含まれています:
  ***, Version=***, Culture=***, PublicKeyToken=***, processorArchitecture=***

項目の数 = 1

とすることで確認できます。

Microsoft Learnから検索