エラーの発生
Visual Studio でビルドを実行したら下記のエラーが出た。
Your project does not reference “.NETFramework,Version=v4.5.1” framework. Add a reference to “.NETFramework,Version=v4.5.1” in the “TargetFrameworks” property of your project file and then re-run NuGet restore. ProjectName
上記のエラーメッセージではバージョン「4.5.1」と書かれているが、他のバージョンでも起こりうるエラーです。
原因
プロジェクトファイルのプロパティで、ターゲットフレームワークのバージョンを変更した。
そのバージョンが obj フォルダ内の project.assets.json ファイルに記述されているターゲットフレームワークのバージョンと一致しないためエラーが発生した。
通常は、多少の不整合が生じても、自動的に修復されるらしいんだけど(ビルドし直すとエラーが消えることもあったような?)。
解決法
海外記事で見つけた解決法
海外の記事を見ると・・・
- obj フォルダの中にある project.assets.json を削除する
- project.lock.json を削除する
- obj フォルダの中にある *.json を削除する
- obj フォルダを削除する
- obj フォルダと bin フォルダと .vs フォルダを削除する
- project.assets.json に記述されているバージョンをテキストエディタで修正する。
(例)”v4.5″ → “v4.5.1″、”net45” → “net451” - 新規プロジェクトを作成して、エラーが出たプロジェクトのファイルをコピーする
というような解決法が見つかりました。
私も試しましたが、 project.assets.json を削除するか、または obj フォルダを削除すると、確かにエラーは解消しました。
obj フォルダですからね。その中のファイルを削除してもそれほど問題にはならないとは思います。
project.assets.json をテキストエディタで編集しても解決しました。
が・・・ちょっと引っかかったので、違う解決法がないかもう少し調査してみました。
私の解決法
エラーメッセージに「NuGet の復元を再実行せよ」と書いてあるので、下記の記事を参考にアレコレやってみたんですが、最初はエラーが解消しませんでした(私のやり方が悪かった可能性もありますが)。
Microsoft – nuget – パッケージを再インストールし更新する方法
Microsoft – nuget – パッケージの復元エラーのトラブルシューティング
それでも何回か試しているうちに理由が分からないまま突然エラーが解消した瞬間があったので、試行を重ねた結果、下記のやり方でエラーが解消することを確認しました。
まず、ソリューションに複数のプロジェクトが含まれている場合は、エラーが出たプロジェクトの名前を確認しておきます。
Visual Studio の上部メニューから[ツール]>[NuGet パッケージ マネージャー]>[パッケージ マネージャー コンソール]を選択。
パッケージマネージャーコンソールの[既定のプロジェクト]のところで、エラーが出たプロジェクトを選択し・・・
PM> プロンプトのところで下記のように入力して Enter を押します。
Update-Package -reinstall
そしてプロジェクトをリビルドすると・・・どうでしょう? 直ってませんか?
私の場合はこれで直りました。そして project.assets.json の中に記述されていたバージョンも正しい値に更新されました。