ファイルまたはアセンブリを読み込めませんでした 'Microsoft.Build.Framework'(VS 2017)


87

コマンド「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つを読み込めませんでした。指定されたファイルが見つかりません。`


1
ドイツ語では、このエラーメッセージは次のようになります。
Uwe

回答:


91

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

'ファイルまたはアセンブリを読み込めませんでした' Microsoft.Build.Framework、Version = 15.1.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a 'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。'

私はVisualStudio 2017を使用していてUpdate-Database、その後にしようとしていましたAdd-Migration

この問題を解決するために、Visual Studio閉じて再度開いてから、再度実行Update-Databaseしました。

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


6
はい、この場合、「Turn-It-Off-And-On-Again」が解決への正しいパスであるように見えます。
ダレンオスター2017年

16
これは機能しますが、正解とは思いません。VSを再起動せずに、一度限り修正したいと思います。
スタニスラフ

1
これは、移行後に毎回発生し、動作するにはPCを完全に再起動する必要があります。
OverMars 2017年

3
私は提案されたすべての解決策を試しました。それらのどれも恒久的に問題を解決するようには見えません。VisualStudioを再起動し続ける必要があります。
Augusto Barreto

4
これはGithubのここでの未解決の問題であるgithub.com/aspnet/EntityFramework6/issues/382
ビリルビンSimser

99

ローカルビルドスクリプトは、古いバージョンのnuget.exe4.7.1.5393)を使用してNuGetパッケージを復元していました。Visual Studio 2019バージョンに更新した後、このエラーが発生し始めました16.5.0nuget.exe5.4.0.6315)の最新バージョンに更新すると、問題が修正されました。

nuget.exeここからダウンロードできます:https//www.nuget.org/downloads


27
ビルドサーバーにVS2019のみをインストールしたときに、この課題に直面しました。Azure DevOpsビルドでこれを修正するには、NuGetツールのインストーラーステップでバージョン5.4.0をリクエストします。
スマッシュ長老

3
TeamCityで4.3.0から5.6にアップグレードしました。これで私の問題は修正されました。ありがとう!
エサイス

3
これでした。本当にありがとう!4.4.1から5.4.0に移行しました。
DaleyKD

2
@ElderSmash AzureDevOpsビルドも使用しています。この場合、新しいバージョンを指定しなくても、NuGetインストーラーの手順をからNuGetToolInstaller@0に更新することで問題が解決しましたNuGetToolInstaller@1。ただし、これで問題の根本原因が修正されるのか、それとも修正がローカルキャッシュをクリアすることの副作用にすぎないのかはわかりません。
MarkusM

2
@ElderSmashそれはまさに私の問題であり、解決策でした。ありがとう!
ダニエ

41

この問題の根本的な原因は、devenv.exe.configファイル内の相対パスから発生しますMicrosoft.Build.Framework.dll(xmlタグを参照)。

一部のVisualStudio拡張機能は、現在のディレクトリを変更し、相対パスを無効にします。

これを修正するには、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\


Visual Studio Professioalを使用していますが、これも同じです。このエラーが複数回発生しますか?
シャン

IDE(コミュニティバージョン)の下にMSBuildフォルダーがありませんでした。MSBuildを「C:\ ProgramFiles(x86)\ Microsoft Visual Studio \ 2017 \ Community」からコピーしましたが、何も修正されませんでした。
OverMars 2017年

1
2017 Proを使用していますが、これで問題が修正されました。1
トム・ライト

2
あなたはこの修正を行った後、VS2017を更新した場合、あなたは再びdevenv.exe.config更新する必要がある場合がありますことをご注意
マイク・ピーターソン

2
この回答は、もう一度私を助けてくれました-VS2017を更新した後、@ MikePetersonが言うようにこれをもう一度行う必要があります。
James Monger 2018年

34

少なくともVS2017 Professional15.5.2とEntityFramework 6.1.1を実行している環境では、問題を完全に解決するように見える回避策を見つけました。

基本的に、DLL(いくつかの関連するものを含む)をGAC(グローバルアセンブリキャッシュ)にインストールすると、問題は解決します。

次の手順を実行します:

  1. Visual Studio2017の実行中のすべてのインスタンスを閉じます

  2. Visual Studio2017開発者コマンドプロンプトを起動します

  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"
  1. Visual Studio2017を再起動します

本質的に、.NETがDLLを読み込もうとすると、GACが(ほとんどの場合)優先され、DLLがGACを介して解決されるため、FileNotFoundExceptionはなくなります。

繰り返しになりますが、これは私にとってはうまくいき、単なる回避策であり、コアの問題自体を解決することはできませんが、少なくともEF移行を処理しようとするときに、常にVSを再起動する必要はありません。これで十分です。


1
私のためにも働いた。Visual Studio 2017開発者コマンドプロンプトはC:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Toolsにあり、管理者として実行する必要があります。
デヴィッド・ルトアノ

2
参考までに-これは、マイクロソフトが製品をアップグレードし、GACエントリが無効になったときに問題を引き起こす可能性があります(新しいバージョン、またはパスの変更..プロとエンタープライズなど)。(このソリューションを使用した原因に)あなたのプロジェクトがロードされない場合は、最新の15.8.0へのアップグレードに注目すべき問題は、ここを参照してください:developercommunity.visualstudio.com/content/problem/311136/...
バリー・

11

これは私にとってはうまくいきました-2020年以降のサポート以外の問題のようです。

Azure Build Pipeline>NuGet tool installerステップ、変更Version of NuGet.exe to installを新しいバージョンに、のような5.4.0https://dist.nuget.org/tools.jsonでバージョンを確認してください

問題が解消され、正常にビルドされるようになりました。


使用済みのnugetバージョンを更新することも、問題を修正する方法でした。
NP83

7

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

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

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

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

私の問題は、VS2017でVS2015で構築されたプロジェクトを公開したことが原因だと思います。同じ問題を抱えている他の人を助けることができれば幸いです。


これは、オンプレミスTFSのCIビルドを修正するのに役立ちました。私のビルドサーバーの1つにはこれらのツールがなく、非常によく似た問題で失敗し続けました。
Budhead20 0419年

4

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

ここに画像の説明を入力してください

使用して提案するプロセスエクスプローラを


1
「VisualStudioの再起動が機能しない場合に備えて、タスクマネージャー/プロセスエクスプローラーに移動し、スキルVBCSCompiler.exe」というこのソリューションを試していますが、正常に機能します。
モハマドジハードヘラル


2

私の場合、何か(おそらくNuGet-Update)がAssemblyBindingをweb.config-Fileに追加しました:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
</dependentAssembly>

そのdependentAssemby-Entryを削除した後、プロジェクトを再度公開できました。


2

これは私にとってはうまくいきました:nugetrestoreコマンドを実行するとエラーが発生します。Nugetバージョン4.6.2。この問題を解決するには2つの方法があります。

Nuget4.8.2以降を使用してください。gacutil / i "C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll


1

この問題が発生しました。この場合、次のことを行う必要があります。

問題は、](IDbCommandInterceptor)を呼び出すデータベースコマンドインターセプターが構成されていて、これがHttpRuntime.Cache["somekey"原因で移行コマンドを実行できなかったことです。この依存関係を取り除いた後、すべてのコマンドは完全に実行されました。たぶんHttpRuntime、ビルドフレームワークdllを見つけることができませんでしたか?

したがって、移行コマンドで同様の問題が発生していないかどうかを確認できない場合は、コールスタック全体を確認してください。


非常に興味深いことに、私のスタックトレースには、HttpContext.Currentを使用したメソッドの呼び出しが含まれていました。これを削除すると、問題が削除されました。
Timores 2018

0

macOSでXCode / Monoコンポーネントを更新したときに、同じ問題に直面しました。

解決策は、Visual Studio forMacを最新バージョンに更新することです。

この問題は、新しいXCode / Monoバージョンでインストールされた.NETCore3.0パッケージの新しいMSBuildツールを使用する場合に発生すると思います。


0

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

<dependentAssembly>
      <assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.9.0.0"/>
      <codeBase version="15.9.0.0" href="..\..\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" />
</dependentAssembly>

2
あなたの例は消えたようです。
ジャマー

0

Visual Studio 2019Communityエディションを使用します。運が悪かったので他の解決策を試しましたが、NuGetキャッシュをクリアした後、問題は解決したようです。 ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.