NuGetでEntityFrameworkのバージョンアップを行うときにバージョンを上げすぎてしまった場合どうやって戻すのかをまとめてみました。(Webから経費精算 はASP.NET MVC3 + EntityFramework + PostgresSQLを利用しています!)
そもそも、NuGetとは?という方はこちらを参考にどうぞ。
NuGetはRubyのGemとよく似た仕組みです。とてもよくできていると思うのですが、何となく裏側を理解せずに利用しようとするとどうしていいかわからなくなるのはマイクロソフト製品共通のお話です。裏側をすべて理解できなくとも、せめてバージョンアップやバージョンダウン、どこに何があるのかくらいは把握しておこうと思います。
今回試しに行ったことは、PackageManagerでEFのアップデートを行うけれども、アップデートのバージョンなどを指定せず一気にBeta版までアップデートしてしまったので正規版に戻したいということです。順番に見ていきましょう。
PackageManagerを利用してプロジェクトに関連するパッケージをすべてアップデートしました。
確かにEF4のバージョンが 4.3.1から5.0.0-beta2へ更新されています。その結果、参照先のDLL、Web.config(App.config)、packages.configの内容が書き換えられています。
あとは、ソリューションフォルダに作成されているpackagesフォルダにも 追加があります。
ここまで把握できれば、戻すこと自体は簡単です。それぞれを元の状態に戻せば良いだけだからです。
DLLの参照先をソリューション内のpackagesフォルダに保存されているEntityFramework4.3.1のDLLへ変更します。
次に Web.configとPackages.configを戻しますが、これはバージョン管理ソフトで元に戻すのがお手軽で良いでしょう。
これで無事元のバージョンに戻すことが可能となりました。
この手の仕組みは導入時は全く問題なく利便性が目立つのですが、アップデートやらバージョン変更時にどうすれば良いのかで悩んだり困ったりすることが多いように思います。仕組み自体はシンプルなので、どのように利用できるのかを簡単なプロジェクトなどを作成して確認しておくといざというときに困らないのではないかと思います。