7

Mvc4 Web プロジェクトにバンドルを追加しようとしています。私が取ったステップ:

  1. 私のプロジェクトへの参照を追加しましたSystem.Web.Optimization
  2. 私の@Styles.Render("~/Content/css")中に追加されました<head>_Layout.cshtml
  3. BundleConfig.RegisterBundles(BundleTable.Bundles);に追加Global.asax.cs
  4. withinメソッドBundleConfig.csApp_Startフォルダに追加bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));RegisterBundles(...)
  5. フォルダーsite.css内に単純なものを追加しました。Content

上記のステップ 2 で表示されるエラーは次のとおりです。Could not load file or assembly 'WebGrease, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

ここに画像の説明を入力

DLL リファレンスか何かがありませんか? 最初は空の Mvc4 プロジェクトから始めたことに注意してください。

4

2 に答える 2

7

昨日かそこらで私もこの問題を抱えていましたが、解決策を見つけました。基本的には「webgrease」をアップデートするだけです。

Webgreaseを更新するために私がしたことは次のとおりです。

  1. ソリューション エクスプローラーでプロジェクト ソリューションを右クリックします。
  2. 「ソリューションの NuGet パッケージの管理」をクリックします。
  3. 左側の更新セクションに移動します
  4. 「ウェブグリース」で検索
  5. 次に、「WebGrease」を更新します

これは、ソリューションを構築したときにうまくいきました。

于 2013-01-02T02:43:33.610 に答える
1

WebForms を実行している古い ASP.NET Web アプリケーションに ASP.NET MVC 5 を追加した後、同じ問題が発生しました。新しい機能を追加して MVC プラットフォーム上に構築したいので、MVC と従来の Web アプリケーションを並行して実行することが重要です。この回答をここに書いているのは、あなたが今読んでいるトピックに対して選択されたソリューションを含め、stackoverflow や他の場所で見つけたすべてのソリューションが役に立たなかったからです。たぶん、私の発見はそこにいる誰かを助けるでしょう...

MVC 5 を Web アプリケーション プロジェクトに追加すると、System.Web.Mvc、System.Web.Razor などの参照が多数インストールされました。Microsoft.AspNet.Web.Optimization という NuGet パッケージもインストールされました。 WebGrease への参照があります。あなたと私が問題を抱えていた参照。

私の Web プロジェクトにインストールされた最適化 dll のバージョンは、Microsoft.AspNet.Web.Optimization 1.1.3 であり、現時点での最新バージョンです。WebGrease バージョン 1.5.2 が付属しています。

面白いことに、_Layout.cs で @Styles.Render("~/Content/css") ステートメントを実行したときに表示されたエラー メッセージは、WebGrease バージョン 1.5.1 を参照していました。私の Web プロジェクトには 1.5.2 がインストールされていたため、1.5.1 バージョンがどこから入手されたのかわかりません。WebGreaseをアンインストールして再インストールしてみたり、WebGreaseを最新版(1.6.5135)にバージョンアップしてみました。これらのdllがGACにインストールされていないことを確認しました(そうではありませんでした)。「C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\」のすべての一時ファイルを削除しましたが、すべて役に立ちませんでした。

Fuslogvw.exe というプログラムを使用して、Web アプリケーションを実行したときにすべてのバインド情報をログに記録しました。これは、実行時にアプリケーションが古い、存在しないバージョンの WebGrease をロードしようとする論理的な理由を見つけられることを期待してのことです。私のアプリケーション。興味深いことに、ログの出力はアプリケーションが何をしていたかを示していましたが、残念ながらその理由はわかりませんでした。ログには、Microsoft.AspNet.Web.Optimization バージョン 1.1.3 と WebGrease バージョン 1.5.2 をインストールしたにもかかわらず、Microsoft.AspNet.Web.Optimization バージョン 1.1.0.0 をロードしようとしたことがわかりました。これには、古いバージョンも含まれています。 WebGreaseの。なぜこれをしたのですか?PC のどのプロジェクトにも最適化を追加したことがないので、わかりません。

私の解決策は、Microsoft.AspNet.Web.Optimization と WebGrease の両方を (この順序で) 削除し、パッケージ マネージャー コンソールで次のコマンドを実行して、Microsoft.AspNet.Web.Optimization バージョン 1.1.0 をインストールすることでした。

Install-Package Microsoft.AspNet.Web.Optimization -Version 1.1.0

これにより、WebGrease バージョン 1.3.0 がインストールされました。これにより、_Layout.cshtml ページを使用する MVC カミソリ ビューをロードするときに問題は発生しませんでした。

興味のある方は、Fuslogvw.exe によって生成されたログの出力を以下に示します。そこには、存在しない最適化の 1.1.0 バージョンを読み込もうとしたことが明確に示されています。

*** Assembly Binder Log Entry  (26.11.2018 @ 13:19:59) ***

The operation failed.
Bind result: hr = 0x80131040. No description available.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Projects/MyProject/Web/
LOG: Initial PrivatePath = C:\Projects\MyProject\Web\bin
LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\myproject\1db399c5
LOG: Cache Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\myproject\1db399c5
LOG: AppName = 3f7f1cb1
Calling assembly : System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\MyProject\Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/ipmvcang/1db399c5/3f7f1cb1/WebGrease.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/ipmvcang/1db399c5/3f7f1cb1/WebGrease/WebGrease.DLL.
LOG: Attempting download of new URL file:///C:/Projects/MyProject/Web/bin/WebGrease.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Projcets\MyProject\Web\bin\WebGrease.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Setup failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
于 2018-11-27T12:06:38.280 に答える