web-dev-qa-db-ja.com

ファイルまたはアセンブリ「Microsoft.Build.Framework」をロードできませんでした(VS 2017)

「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つをロードできませんでした。システムは指定されたファイルを見つけることができません。

56

私はあなたと同じ問題があったと信じています(エラーメッセージ全体を保存しませんでしたが、私のエラーメッセージは

'ファイルまたはアセンブリをロードできませんでした' 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を再実行しました。

これで問題が解決する場合としない場合がありますが、役立つ場合に備えて投稿したいと思いました。

66
Eightgate

この問題の根本的な原因は、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\に置き換えます。

36
Renaud Bancel

少なくとも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を常に再起動する必要はありません、それは私にとって十分です。

28
Mr Lingua

Visual Studioの再起動が機能しない場合に備えて、タスクマネージャー/プロセスエクスプローラーとスキルVBCSCompiler.exeに移動します

enter image description here

Process Explorer の使用を提案する

4
bitsmonkey

Closingおよびre-opening Visual Studioは魅力的です!

2

不足しているファイルまたはアセンブリのバージョンが質問と異なります。

ASP.netプロジェクトを公開しようとしたときにこのエラーが発生しました

Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Microsoft Build Tools 2015 をインストールして問題を解決しました

VS 2017でVS 2015で構築されたプロジェクトを公開したことが原因で、私の問題が発生したと思います。同じ問題を抱えている他の人を助けることができます。

2
V-SHY

私たちはこの問題を抱えていましたが、私たちの場合に必要なことは次のとおりです。

問題は、(IDbCommandInterceptor)]と呼ばれるデータベースコマンドインターセプターHttpRuntime.Cache["somekey"が設定されていたため、何らかの理由で移行コマンドの実行に失敗したことです。この依存関係を取り除いた後、すべてのコマンドは完璧に実行されました。たぶんHttpRuntimeはBuild Framework dllを見つけられなかったのでしょうか?

したがって、移行コマンドが同様の問題があるかどうかを確認できない場合は、callstack全体を確認してください。

1
Øyvind Rask

モデル内の複合型もこの問題を引き起こす可能性があります。例:モデルにリストがある場合。

0
harisdautovic

すでに投稿してくれた人に感謝します。私の状況は上記の組み合わせにより解決されました。 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つの例を次に示します。

0
Chilberto