「update-database」コマンドを実行しようとすると、次の例外が発生します。
「-Verbose」フラグを指定して、ターゲットデータベースに適用されているSQLステートメントを表示します。 System.IO.FileNotFoundException:ファイルまたはアセンブリ 'Microsoft.Build.Framework、Version = 15.1.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。ファイル名: 'Microsoft.Build.Framework、Version = 15.1.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'
WRN:アセンブリバインディングログはオフになっています。アセンブリバインドエラーログを有効にするには、レジストリ値[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)を1に設定します。注:アセンブリバインドエラーログに関連するパフォーマンスの低下があります。この機能をオフにするには、レジストリ値[HKLM\Software\Microsoft\Fusion!EnableLog]を削除します。
ファイルまたはアセンブリ「Microsoft.Build.Framework、Version = 15.1.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードできませんでした。システムは指定されたファイルを見つけることができません。
私はあなたと同じ問題があったと信じています(エラーメッセージ全体を保存しませんでしたが、私のエラーメッセージは
'ファイルまたはアセンブリをロードできませんでした' Microsoft.Build.Framework、Version = 15.1.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a 'またはその依存関係の1つシステムは指定されたファイルを見つけることができません。 '
Visual Studio 2017を使用していますが、Add-Migration後にUpdate-Databaseを実行しようとしました。
この問題を解決するには、I Visual Studioを閉じて再度開くを実行し、Update-Databaseを再実行しました。
これで問題が解決する場合としない場合がありますが、役立つ場合に備えて投稿したいと思いました。
この問題の根本的な原因は、devenv.exe.config
ファイルのMicrosoft.Build.Framework.dll
への相対パスにあります(xmlタグを参照)。
一部のVisual Studio拡張機能は現在のディレクトリを変更し、相対パスを無効にします。
修正するには、C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\
ディレクトリでこのファイルを開きます。すべての..\..\MSBuild\15.0\Bin\
をC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\
に置き換えます。
少なくともVS 2017 Professional 15.5.2およびEntity Framework 6.1.1を実行している環境では、問題を完全に解決するように思われる回避策を見つけました。
基本的に、DLL(いくつかの関連するものを含む)をGAC(グローバルアセンブリキャッシュ)にインストールすると、問題はなくなります。
次の手順を実行します:
1- Visual Studio 2017の実行中のすべてのインスタンスを閉じます
2- Visual Studio 2017開発者コマンドプロンプトを起動する
3-次のコマンドを入力します(Professionalをエディション(EnterpriseまたはCommunity)に置き換えるか、それに応じてパスを調整します):
gacutil/i "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll"
gacutil/i "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.dll"
gacutil/i "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll"
gacutil/i "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll"
gacutil/i "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll"
gacutil/i "C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll"
4- Visual Studio 2017を再起動します
本質的に、.NETがDLLをロードしようとすると、GACが(ほとんどの場合)優先度を与えられ、DLLが解決されるとFileNotFoundExceptionがなくなります。 GAC。
繰り返しますが、それは私のために機能し、単に回避策であり、コアの問題自体を解決することはできませんが、少なくともEF移行で作業しようとするときにVSを常に再起動する必要はありません、それは私にとって十分です。
Visual Studioの再起動が機能しない場合に備えて、タスクマネージャー/プロセスエクスプローラーとスキルVBCSCompiler.exeに移動します
Process Explorer の使用を提案する
Closingおよびre-opening Visual Studioは魅力的です!
不足しているファイルまたはアセンブリのバージョンが質問と異なります。
ASP.netプロジェクトを公開しようとしたときにこのエラーが発生しました
Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft Build Tools 2015 をインストールして問題を解決しました
VS 2017でVS 2015で構築されたプロジェクトを公開したことが原因で、私の問題が発生したと思います。同じ問題を抱えている他の人を助けることができます。
私たちはこの問題を抱えていましたが、私たちの場合に必要なことは次のとおりです。
問題は、(IDbCommandInterceptor)
]と呼ばれるデータベースコマンドインターセプターHttpRuntime.Cache["somekey"
が設定されていたため、何らかの理由で移行コマンドの実行に失敗したことです。この依存関係を取り除いた後、すべてのコマンドは完璧に実行されました。たぶんHttpRuntime
はBuild Framework dllを見つけられなかったのでしょうか?
したがって、移行コマンドが同様の問題があるかどうかを確認できない場合は、callstack全体を確認してください。
モデル内の複合型もこの問題を引き起こす可能性があります。例:モデルにリストがある場合。
すでに投稿してくれた人に感謝します。私の状況は上記の組み合わせにより解決されました。 Visual Studioのいくつかのバージョンがありました:2015、2017、2019。ある時点で、MSBUILDのバージョンは15.1から15.9になりました。 C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.configファイルを更新して15.9ライブラリを指すようにすることで、この問題を解決しました。エントリの1つの例を次に示します。