web-dev-qa-db-ja.com

WebGreaseをバージョン1.3.0にアップグレードするとエラーが発生する

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")

このエラーを解決する方法。

43
Neeraj Mude

ここに私のために働いた答えがあり、それは上記の答えのいくつかの組み合わせです。最初に、次のパッケージをインストール/アンインストール/再インストールします。

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ファイルを削除し、再作成して、コンテンツを貼り付けます。

これは私のために働いた最後の修正です。

65
sec_goat
<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>
17
Hriju

アセンブリの古いバージョン(1.0.0.0?)を参照しているようです(現在のバージョンは1.3.0.0と仮定)。この場合、web.configで Assembly redirect が必要ですが、最新バージョンを使用するにはバイナリを再コンパイルしてください。

最新バージョンが古いバージョンと同じアセンブリバージョン(1.0.0.0)を共有している場合は、別の可能性として、正しいアセンブリを使用するためにコードを再コンパイルし、正しいコピーが使用されていることを確認する必要があります(GACで間違ったものを確認し、 fuslogv)を使用します エラーの原因となった正確なファイルを調査します)。

4
Alexei Levenkov

次の組み合わせにより、問題が解決しました。まず、パッケージマネージャーのコマンドラインで次のコマンドを実行します(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" />
3
nathan

同じ問題がありました。別の開発者がWebGreaseパッケージ(およびその他)をアップグレードしましたが、何かが同期またはチェックインされませんでした。パッケージファイルを編集して、既存のパッケージへの参照を削除しました。その後、パッケージマネージャーを使用して再インストールしました。最後に、パッケージを更新しました。

Packages.configファイルがプロジェクト内のファイル(適切なバージョンを含む)と一致しない場合、パッケージはインストールまたは更新されないようです。ただし、パッケージマネージャーにはエラーは表示されず、パッケージの更新またはインストールに失敗するだけです。

3
roadsunknown

私のために働いたバインディングリダイレクト:

<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)を含めなかったことです。

失敗ケーキ!

2

これは、Microsoft.AspNet.Web.Optimization(前進する最適化)の問題です。

Optimizeをアンインストールし、web.configからWebGrease Assemblyリダイレクトを削除して、WebGreaseをダウングレードする必要があります。

次に、Optimizeを再インストールし、WebGreaseをアップグレードするdo n'tを確認します。

簡単な修正ですが、ビルドが機能しました!

1
daddywoodland

エラーではなく警告であったことを除いて、同様の問題がありました。 WebGreaseを1.3.0に更新した後、ビルドにより警告ソースが宣言に追加されます。 web.configファイルに適切なAssemblyリダイレクトが含まれていることを確認した後、最終的に新しい_Layout.cshtmlビューを作成し、以前とまったく同じかみそりマークアップ(コピー/貼り付け)で古いファイルに上書き保存しました。その後、警告は消えました。

警告が何であるかは正確にはわかりませんが、コードをファイルにコピーして、新しいファイルに貼り付け、元のファイルを上書きしてみてください。

なぜこれが機能するかについての洞察があれば、私はすべて耳です。

1
nwayve

Web APIプロジェクトの場合、実際に機能しているのは次のことです。

  1. NuGetパッケージマネージャーを開き、Installed packagesをクリックして、Microsoft.AspNet.Web.Optimizationをアンインストールします。 WebGrease 1.1.0を削除するように求められます。 Yesを押します。

  2. NuGetの[オンライン]タブをクリックして再インストールし、Microsoft.AspNet.Web.Optimizationを検索します。

これで、すべてが期待どおりに機能しています。

1

私の場合、このすべての方法は機能しませんでした。最後に、パッケージマネージャーを介してMicrosoft.AspNet.Web.OptimizationおよびWebGreaseパッケージをアンインストールすることでこの問題を解決し、メモ帳でプロジェクトファイル(.csproj)を開き、この2つのパッケージに関連するすべてのエントリを削除します。問題があることがわかりました。最後に、パッケージマネージャーを使用してこの2つのパッケージを再度インストールし、プロジェクトを実行します。これですべての作業は問題ありません。

0
Mateusz

これが私の実行時セクションの外観であり、動作します

<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>
0
basarat

@roadsunknownに感謝します。ホストマシンがフリーズした後、構成がホースで固定されたため、VMが正しくシャットダウンされません。これを解決するには、NuGetでMicrosoft.AspNet.Web.Optimizationをアンインストールし、 packages.configでWebGreaseを実行し、最後にNuGetを使用してMicrosoft.AspNet.Web.Optimizationを再インストールしました。

0
Paul Angelno

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" />

ひどい?たぶん、しかし、それは常に細部にありますよね?これは私のためにそれを修正しました。

とにかく、次のアップデートですぐにそれができることを期待しています。

0
Bishop

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

乾杯!!!

0
Ifeanyi Chukwu