WebGrease
をバージョン1.3.0
にアップグレードするとエラーが発生します:
ファイルまたはアセンブリ「WebGrease、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)
ソースエラー:
Line 6: <title>@ViewBag.Title</title>
Line 7: @Styles.Render("~/Content/bundles/bootstrap")
このエラーを解決する方法。
ここに私のために働いた答えがあり、それは上記の答えのいくつかの組み合わせです。最初に、次のパッケージをインストール/アンインストール/再インストールします。
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
次に、〜/ Views/Shared/_Layout.cshtmlのコンテンツのコピーを作成して_Layout.cshtmlファイルを削除し、再作成して、コンテンツを貼り付けます。
これは私のために働いた最後の修正です。
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> </dependentAssembly>
Web.config
の上位コードを次のように変更します
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/> </dependentAssembly>
アセンブリの古いバージョン(1.0.0.0?)を参照しているようです(現在のバージョンは1.3.0.0と仮定)。この場合、web.configで Assembly redirect が必要ですが、最新バージョンを使用するにはバイナリを再コンパイルしてください。
最新バージョンが古いバージョンと同じアセンブリバージョン(1.0.0.0)を共有している場合は、別の可能性として、正しいアセンブリを使用するためにコードを再コンパイルし、正しいコピーが使用されていることを確認する必要があります(GACで間違ったものを確認し、 fuslogv)を使用します エラーの原因となった正確なファイルを調査します)。
次の組み合わせにより、問題が解決しました。まず、パッケージマネージャーのコマンドラインで次のコマンドを実行します(sec_goatが提供する回答と似ていますが、まったく同じではありません)。
Uninstall-Package Microsoft.AspNet.Web.Optimization
Uninstall-Package WebGrease
Install-Package Microsoft.AspNet.Web.Optimization
Update-Package WebGrease
次に、Hrijuと同様に、web.configで次の行を変更する必要がありました。
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
これに:
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" />
同じ問題がありました。別の開発者がWebGreaseパッケージ(およびその他)をアップグレードしましたが、何かが同期またはチェックインされませんでした。パッケージファイルを編集して、既存のパッケージへの参照を削除しました。その後、パッケージマネージャーを使用して再インストールしました。最後に、パッケージを更新しました。
Packages.configファイルがプロジェクト内のファイル(適切なバージョンを含む)と一致しない場合、パッケージはインストールまたは更新されないようです。ただし、パッケージマネージャーにはエラーは表示されず、パッケージの更新またはインストールに失敗するだけです。
私のために働いたバインディングリダイレクト:
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.3.0.0"/> </dependentAssembly>
</assemblyBinding>
微妙な違いは、oldVersion
attrにこのバージョン(1.3.0.0)を含めなかったことです。
失敗ケーキ!
これは、Microsoft.AspNet.Web.Optimization(前進する最適化)の問題です。
Optimizeをアンインストールし、web.configからWebGrease Assemblyリダイレクトを削除して、WebGreaseをダウングレードする必要があります。
次に、Optimizeを再インストールし、WebGreaseをアップグレードするdo n'tを確認します。
簡単な修正ですが、ビルドが機能しました!
エラーではなく警告であったことを除いて、同様の問題がありました。 WebGreaseを1.3.0に更新した後、ビルドにより警告ソースが宣言に追加されます。 web.configファイルに適切なAssemblyリダイレクトが含まれていることを確認した後、最終的に新しい_Layout.cshtmlビューを作成し、以前とまったく同じかみそりマークアップ(コピー/貼り付け)で古いファイルに上書き保存しました。その後、警告は消えました。
警告が何であるかは正確にはわかりませんが、コードをファイルにコピーして、新しいファイルに貼り付け、元のファイルを上書きしてみてください。
なぜこれが機能するかについての洞察があれば、私はすべて耳です。
Web APIプロジェクトの場合、実際に機能しているのは次のことです。
NuGetパッケージマネージャーを開き、Installed packages
をクリックして、Microsoft.AspNet.Web.Optimization
をアンインストールします。 WebGrease 1.1.0
を削除するように求められます。 Yes
を押します。
NuGetの[オンライン]タブをクリックして再インストールし、Microsoft.AspNet.Web.Optimization
を検索します。
これで、すべてが期待どおりに機能しています。
私の場合、このすべての方法は機能しませんでした。最後に、パッケージマネージャーを介してMicrosoft.AspNet.Web.OptimizationおよびWebGreaseパッケージをアンインストールすることでこの問題を解決し、メモ帳でプロジェクトファイル(.csproj)を開き、この2つのパッケージに関連するすべてのエントリを削除します。問題があることがわかりました。最後に、パッケージマネージャーを使用してこの2つのパッケージを再度インストールし、プロジェクトを実行します。これですべての作業は問題ありません。
これが私の実行時セクションの外観であり、動作します
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
@roadsunknownに感謝します。ホストマシンがフリーズした後、構成がホースで固定されたため、VMが正しくシャットダウンされません。これを解決するには、NuGetでMicrosoft.AspNet.Web.Optimizationをアンインストールし、 packages.configでWebGreaseを実行し、最後にNuGetを使用してMicrosoft.AspNet.Web.Optimizationを再インストールしました。
HrijuとNathan(アンインストール、再インストール、および更新)と同じ取引で、newVersion
属性を省略する代わりに、それを保持しました。しかし、WebGreaseが1.1.0から1.3.0に直接移行したため、1.2.0の必要はありませんでした(jenson-button-eventにあったように)(スペインのJBに幸運を祈ります)。
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.3.0.0" />
ひどい?たぶん、しかし、それは常に細部にありますよね?これは私のためにそれを修正しました。
とにかく、次のアップデートですぐにそれができることを期待しています。
これを修正するには、package.configファイル(WEBMATRIX)を更新するだけでした。
<packages>
<package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
<package id="WebGrease" version="1.3.0" targetFramework="net40" />
</packages>
乾杯!!!