Nuget でNpgsql Unsafeのバージョン問題

.Net FrameWork4.7.2へ

.net FrameWorkのバージョンアップ作業の中で古くから使っていたNpgsqlも併せてバージョンアップする事に。コンパイル時、DatabaseをOPENする時にエラーが出るソリューションがあります。エラーが出るソリューションは、System.Runtime.CompilerServices.Unsafeで問題がでています。

解決はしていないのですが、問題発生状況についてメモです。

PostgresqlへのコネクションをOpenする時にエラー

System.Runtime.CompilerServices.Unsafe

アセンブリバージョン4.0.4.1を要求されています。

しかし、実際にインストールされているのは、

アセンブリバージョン4.0.5.0です。

このため、ファイルまたはアセンブリが見つからないと表示されてしまいます。指定されたバージョンが見つからないという意味のようです。

Nugetパッケージの状況としては、

System.Runtime.CompilerServices.Unsafe v4.6.0を利用しており、

app.configには、

<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly> <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" /> </dependentAssembly>
<dependentAssembly>
  <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>

と、アセンブリバージョンは4.0.5.0を要求しているのですが、コンパイルすると、アセンブリバージョン4.0.4.1を探しに行ってしまうのが問題です。

呼び出し元のプロジェクトでNuGetする

呼び出し元のプロジェクトを右クリックし、NuGetパッケージの管理をします。

Npgsqlをインストール

Npgsqlをいったんインストールします。

インストールされたパッケージをすべて更新します。

更新が終わったら全て削除します。

これを行う事で、

System.Runtime.CompilerServices.Unsafe

によるエラーは出なくなりました。