コマンド "update-database" を実行しようとすると、次のような例外が発生します。
適用中の SQL 文を表示するには '-Verbose' フラグを指定してください。 ターゲット データベースに適用されている SQL 文を表示するには '-Verbose' フラグを指定してください。 System.IO.FileNotFoundException:ファイルまたはアセンブリをロードできませんでした。 load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存ファイルの 1 つを読み込むことができませんでした。 またはその依存ファイルの1つです。システムは指定されたファイルを見つけることができません。ファイル名を指定してください。 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
WRN: アセンブリバインディングのロギングがオフになっています。アセンブリバインディングのロギングを有効にするには failure loggingを有効にするには、レジストリ値を以下のように設定します。 HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) を 1 に設定してください。注意 アセンブリバインドの失敗によるパフォーマンスペナルティがあります。 ログを記録します。この機能をオフにするには、以下のレジストリ値を削除してください。 HKLMSoftwareMicrosoftFusion!EnableLog] というレジストリ値を削除してください。 この機能をオフにするには、レジストリ値 > Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or または、その依存関係の1つです。システムは指定されたファイルを見つけることができません。
私もあなたと同じような問題を抱えていたと思います。エラーメッセージ全体を保存したわけではありませんが、私のエラーメッセージは以下の通りです。
'Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or または、その依存関係の1つです。システムは指定されたファイルを見つけることができません'
Visual Studio 2017を使用しており、Add-Migration
の後にUpdate-Database
を行おうとしていました。
問題を解決するために、Visual Studioを閉じて開き直し、再度Update-Database
を実行しました。
これはあなたの問題を解決するかもしれませんし、しないかもしれませんが、私はそれが役に立つかもしれないと思い、投稿しました。
この問題の根本的な原因は、devenv.exe.config
ファイル内の Microsoft.Build.Framework.dll
への相対パスにあります (
Visual Studio Extensions の中には、カレントディレクトリを変更し、相対パスを無効にしてしまうものがあります。
修正するには、このファイルを C:\Program Files (x86)↪Microsoft Visual Studio2017Enterprise゙Common7IDE
ディレクトリで開き、すべての ..\..゙MSBuild15.0Bin
を C:\Program Files (x86)Microsoft Visual Studio/2017Enterprise゙MSBuild15.0Bin
で置き換えてください。
このような問題がありましたが、私たちの場合はどうすればいいのか、ご紹介します。
問題は、データベースコマンドインターセプター (IDbCommandInterceptor)
が設定されており、それが HttpRuntime.Cache["somekey"
] を呼び、何らかの理由で移行コマンドがこのために実行できないことでした。このdepencencyを削除した後は、すべてのコマンドが完璧に実行されました。多分、HttpRuntime
はBuild Framework dllを見つけることができなかったのでしょう?
ということで、移行コマンドに失敗したときのコールスタック全体をチェックして、同様の問題があるかどうかを確認してください。