MVC4 Web APIプロジェクトがあります。サービスプロジェクトの実行中にエラーが発生します
ファイルまたはアセンブリ「WebGrease、バージョン= 1.5.1.25624、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。
webGrease.dllファイルを追加しましたが、まだそのエラーが発生します
そして、web.configを変更してみました
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/>"
そして
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
何が欠けているのかアドバイスしてください。
NuGetを試してみましたか?
Install-Package WebGrease -Version 1.5.1
または
Install-Package WebGrease -Version 1.5.2
私はOPでは少し遅れていることを知っていますが、MVC 4のBootstrap NuGetパッケージを試しているときに同じ問題に遭遇しました、私の場合はMicrosoft .AspNet.Web.Optimizationパッケージ、および簡単なソリューションを見つけることができました。
パッケージマネージャーコンソールで次のコマンドを実行してみてください。
Install-Package Microsoft.AspNet.Web.Optimization
Update-Package WebGrease
Uninstall-Package Microsoft.AspNet.Web.Optimization
Uninstall-Package WebGrease
Install-Package Microsoft.AspNet.Web.Optimization
Update-Package WebGrease
最初の2行はBootstrap 3 for MVC 4パッケージによって既にインストールおよび更新されているため、私にとっては何の効果もありませんでしたが、とにかくそれらを実行した後、すべてがコンパイルされて正常に実行されました。
このエラーは、Nugetパッケージ自体がMicrosoft.AspNet.Web.Optimization 1.1.3
に依存しているにもかかわらず、WebGrease 1.5.1.25624
が内部的にWebGrease 1.5.2.14234
を参照するためです。 Nugetパッケージの作成中に誰かが明らかに混乱しました。
これを解決するには、Web.Config
にこのアセンブリバインディングを追加します。
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.5.1.25624" newVersion="1.5.2.14234" />
</dependentAssembly>
私にとって、上記のシナリオはどれもうまくいきませんでした。
2日間試した後、最終的に解決策を見つけました。
私がやったのは、アンインストールMicrosoft.AspNet.Web.OptimizationおよびWebGrease両方。
この最適化アセンブリが内部的にWebGrease 1.5.1を指すことは知っていました。そこで、WebGrease 1.5.1を参照しない最適化のバージョンを選択しました。
すべてを機能させるために、次のコマンドを実行しました。
Uninstall-Package Microsoft.AspNet.Web.Optimization
Uninstall-Package WebGrease
Install-Package Microsoft.AspNet.Web.Optimization -Version 1.1.0
上記の解決策がうまくいかない人のために私が良い助けになることを願っています。
乾杯!
私が観察した問題は、Jidheesh Rajanが述べたものと密接に一致しました。ただし、(バージョンを指定せずに)Nugetパッケージマネージャーからパッケージを更新しても問題は修正されませんでした。この問題を解決するために私がしなければならなかったことを以下に示します。 (本質的に、WebGreaseをバージョン1.6に明示的に更新しました)
Visual Studioのパッケージマネージャーコンソール内から、WebGreaseを明示的にバージョン1.6に更新します。これがコマンドです。
Install-Package WebGrease -Version 1.6
出力は
Removing 'WebGrease 1.5.2' from {project name}
「WebGrease 1.6.0」を{プロジェクト名}に追加「WebGrease 1.6.0」を{プロジェクト名}に正常に追加しました「WebGrease 1.5.2」をアンインストールします。 「WebGrease 1.5.2」のアンインストールに成功しました。
これにより、web.configが
assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /
bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"
これにより、csprojファイルから行が削除されました。
<WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath>
csprojファイル内のこのノードの更新
<Reference Include="WebGrease, Version=1.5.2.14234, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
</Reference>
これに
<Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
</Reference>
ローカルマシンではなく、ステージWebサーバーで問題が発生しなかったことに留意してください。パッケージを更新せずに問題を解決するために最善を尽くしたかったのですが、これが唯一の修正でした。
多くのことを試してみましたが、これは私にとってはうまくいきました。時にはWebgrease Assemblyの問題、時にはWeb.Optimization Assemblyの問題がありました。これはMicrosoft.AspNet.Web.Optimization 1.1.3で私のために働いた
Update-Package WebGrease -Version 1.6
昔ながらのゴールディ...
私はVisual Studio 2013でMVC 5プロジェクトに取り組んでいましたが、同じ問題がありました。バージョン管理にVisual SVNを使用していましたが、この問題が発生したのはチーム内で1人だけでした。
私のために働いた唯一のものはこれでした:
- Microsoft.AspNet.Web.Optimizationをアンインストールします
- Nugetコマンドプロンプトの実行:install-package Microsoft.AspNet.Web.Optimization -Version 1.0.0
これにより、古いバージョンのWeb.Optimizationがインストールされます。このプロジェクトは、最初はバージョン1.1.0を参照していました。問題はWebGreaseではなく、WebGreaseの既存の古いバージョンを参照しているSystem.Web.Optimization.dllにあります。
プロジェクトを実行したときは機能しましたが、他のチームと同じパッケージバージョンを使用したかったのです。だから、更新しようとしましたが...エラーが返されました...
この後、プロジェクトを(再び)削除し、SVNから取り戻しました。驚いたことに、それは機能し始めました...問題は、プロジェクトを完全に削除し、これまでに数回SVNからそれを取得したことです。同僚からdllを取得したこともあります。NuGetから破損したファイルを取得しているのではないかと思ったからです。
これがいつか誰かに役立つことを願っています。VisualStudio 2016とMVC 8で:)
Starup web-projectに"Install-Package Microsoft.AspNet.Web.Optimization"
(現在のバージョンは1.1.3)を使用しました。これはデフォルトでNuGetコンソールで選択されていません。
しかし、NuGetには新しいapp.configの作成ファイルがありますが、web.configは更新される予定です。
私にとってはWebGrease dependentAssemblyの移動要素をapp.config
からweb.config
の<runtime><assemblyBinding>...</assemblyBinding></runtime>
に移動しました。
パッケージマネージャーコンソールを使用してアンインストールできなかったため、手動でpackages.config
に移動し、古いバージョンをコメントアウトしました。
展開中にこの問題が発生しました。
WebGrease.dllを運用環境にコピーしましたが、Web.Configファイルも更新するのを忘れていました。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Alreasyはこのエラーを解決しました。状況は思ったより簡単でした。 nugetのSystem.Web.Optimizationの新しいバージョンからインストールすると、
//参照:WebGrease、バージョン= 1.5.1.25624、Culture = neutral、PublicKeyToken = 31bf3856ad364e35
同時にWebGreaseバージョン1.5.2.14234があります。プロジェクトを実行中、このエラーが発生しました:ファイルまたはアセンブリをロードできませんでした 'WebGrease、バージョン= 1.5.1.25624
スー、私はnugetでこのバージョンをチェックしようとしましたが、それはそうではなかったことに驚きました...しかし、VSで新しいプロジェクトを作成するとき-私はそれを得ました。このエラーをハックするには、GACにインストールしようとします。しかし、gacは、このlibがサブスクライブされていないと言います。 System.Web.Optimization Version = 1.1.0.0へのダウングレード。参照は次のとおりです。
//参照:WebGrease、Version = 1.3.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35
1.3.0.0は強くサブスクライブされています-助けてくれました。できます。 webgreaseをアップグレードした後、Version = 1.6.5135.21930があり、完全に機能しました。
結論として、このエラー(ファイルまたはアセンブリ 'WebGrease、Version = 1.5.1.25624をロードできませんでした)は、System.Web.Optimization libがサブスクライブされていないwebgrease dllバージョンを参照しているためであると考えています。
他の答えは私にとってこれを解決しませんでした。新しいMVC 5 APIプロジェクトを追加していますが、古いMVC 2 APIでNiceを再生していませんでした。パッケージの更新を実行した後、前述のエラーが表示されました。私の解決策は、問題のプロジェクトのweb.configでNuGetによって追加されたWebGrease参照を削除することでした。
解決するには:例外をスローするプロジェクトのweb.configを開き、WebGreaseに追加された依存関係を削除またはコメントアウトします。
これは私がそれを回避するためにしたことです、
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
--- Copy this section to replace in the corrupted file.---
</assemblyBinding>
</runtime>
VS2015などの修正されたものを次に示します。
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Githubのソリューション Sami、Oweis 4 Computer