.NET5でEFCoreSqlを入れたプロジェクトを発行したら謎の残留物が発生した[備忘録]

2021年5月13日プログラミング

こんにちは、.NET5使ってますか?

この前データベース関係でプロジェクトファイルにNuGetパッケージの「Microsoft.EntityFrameworkCore.SqlServer」を入れたんですけど、そのプロジェクトファイルを自己完結型の単一ファイルで発行したら、発行したフォルダになんか「Microsoft.Data.SqlClient.SNI.pdb」っつーよくわかんねえ奴がいて、原因もわからずなに引き起こすかわからんかったので、なるべく正しそうな手順で生成されないようにする方法を調べました。



現象

環境:VisualStudio2019、
フレームワーク:.NET5

テスト用にプロジェクト作ったら再現できましたね。

構成はもう清々しいほどに.NETCore系フォームアプリのデフォルトテンプレートのまんま。作成したプロジェクト「WindowsFormsApp1」にNuGetパケージ「Microsoft.EntityFrameworkCore.SqlServer」をインストール。

画面上の「ClassLibrary1」は無視していい、再現に必要なかった。

発行!プロファイルの構成とプロファイル作ったときに生成されるファイルは以下、単一ファイルにしたい。

で発行↓

おりますわ、、、、「Microsoft.Data.SqlClient.SNI.pdb」。あ、ClassLibrary1は参照してるだけだから無視して頂きたい。

調べた結果、Ver5.0.2の「Microsoft.EntityFrameworkCore.SqlServer」がさらにNuGetパッケージ読み込んでるんだけど、なんかちょっと昔のバージョンの「Microsoft.Data.SqlClient」を使ってるらしくて、それが不整合を起こしてるみたい。

これ左と右のバージョンの差わかりますかね、EFCoreの奴は古くて、なんかこれがダメらしいです。

解決方法はEFCore.SqlServer入れてるプロジェクトに「Microsoft.Data.SqlClient」のNuGetパッケージをインストールするだけ。そしたらバージョンが新しい方に上書きされて、単一ファイルも消えました。

まあとりあえずなんとかなった。VisualStudioさん公式リファレンスの情報量の少なさと、そもそも目的のリファレンスに辿り着けない問題なんとかならんかなぁ、、、

ほいじゃ~