ASP.NET Coreでパッケージの復元に失敗しましたというエラーが発生し、
こちらを解決できたのでメモしておきます。
なお、環境はVisual Studio2022で.NET8を使用しています。
スキャフォールディングでエラー
ASP.NET Coreのスキャフォールディングを行っている時に下記の画像のエラーが発生しました。
モデルも作成しており、DBContextも正しく記述できていました。
また、スキャフォールディングに必要な下記のパッケージもインストールできていました。
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design
Microsoft.EntityFrameworkCore.SqlServer
しかし、上記のエラーが発生したので非常に困りました。
なんとかスキャフォールディングを行いたかったので調査し、様々な記事を参考にしました。
しかし、私の環境で起こっているエラーは上手く解決できませんでした。
そこで新しいプロジェクトを作成してテストを行っているとあることに気づきました。
バージョンを合わせることで上手く実行された
新たにスキャフォールディングだけを行うプロジェクトを作成し、
下記記事を参考にスキャフォールディングを行いました。
Bookモデルを作成し、記事通りにスキャフォールディングを行いました。
するとあっさりスキャフォールディングが上手く実行されました。
再び調査するとある記事を発見します。
こちらの記事でスキャフォールディングが上手くいっていない原因が下記のように紹介されています。
インストールしているパッケージのバージョンが揃っていなかったことが原因。
つまり、パッケージの復元に失敗しましたの原因は
パッケージのバージョンが揃っていなかったことが原因ということだったようです。
たしかに、バージョンについてはいろいろ検証を行っており、全て揃っていなかったです。
では、.NET8のパッケージはどのバージョンにすればよいのでしょうか。
スキャフォールディングが上手くいったパッケージのバージョンを下記に挙げます。
➊Microsoft.EntityFrameworkCore.SqlServer
>8.0.11
➋Microsoft.EntityFrameworkCore.Tools
>8.0.11
➌Microsoft.VisualStudio.Web.CodeGeneration.Design
>8.07
執筆時(2024.12.18)ではパッケージは.NET9が最新版だが、.NET8でプロジェクトを作成したのでパッケージを.NET9にアップデートしても上手く実行されないので注意!
以上のバージョンに変更し、スキャフォールディングの手順を踏むと上手く実行できました。
もし、スキャフォールディングを何度も行っており、バージョンが上手く変更できない場合は
csprojファイルのPackageReferenceタグのVersionをパッケージに合わせます。
まとめ
いかがだったでしょうか。
パッケージのバージョンも変わったりするので、ASP.NET Coreで
スキャフォールディングができないということも多発するかと思います。
そういう時は新しいプロジェクトを作成し、そこでスキャフォールディングを行い、
成功したバージョンに合わせると上手くいくかと思います。
ASP.NET Coreで「パッケージの復元に失敗しました」というエラーが発生している方の
助けになればよいと思います。
コメント