4

まず、この質問への回答は、私のエラーを解決しないでください:

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

本番サーバーに次のバインディングリダイレクトがあります。

<dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>

Microsoft ASP.NET Web 最適化フレームワークに必要な次の DLL が運用サーバー上にあります。

  1. System.Web.Optimization.dll 1.0.0.0 (これはプレリリース版ではありません)
  2. Antlr3.Runtime.dll 3.3.1.7705
  3. Webgrease.dll 1.3.0.0

次のエラーが表示されます。

Could not load file or assembly 'WebGrease, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

GAC を確認し、すべての一時 ASP.NET フォルダーを削除しました。 newVersionconfig から属性を削除しようとしました<bindingRedirect>。ASP.NET に WebGrease 1.0 を探すように指示している理由がわかりません

4

2 に答える 2

8

最後に、他のユーザーが機能していると言っているにもかかわらず、これが機能しない理由を突き止めました。

System.Web.Optimization代わりに、アセンブリが新しいバージョンを使用するように強制するために、web.config ファイルに次のバインド リダイレクトがありました。

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

</configuration>

他のユーザーと同じでしたが、うまくいきませんでした。次に、フュージョン ログ ビューア (Fuslogvw.exe) を使用して詳細情報を調べたところ、バインディング プロセスがリダイレクト命令を見ていないことがわかりました。

最後に、ルートに XML 名前空間があってはならないことがわかりました ... . <configuration>要素から次のものを削除すると、機能します。xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"

また、要素に次の XML 名前空間が指定されていることを確認してください<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

ついに!!

于 2013-06-12T05:10:37.360 に答える
3

私は同じ問題を抱えています。さまざまなプロジェクトを含むソリューションがあります。すべてのプロジェクトから Microsoft.AspNet.Web.Optimization と WebGrease をアンインストールし、すべての bin フォルダーと obj フォルダーを手動で削除しました。

次に、このパッケージを必要とするプロジェクトにのみ Microsoft.AspNet.Web.Optimization をインストールしました。

この時点で、packages フォルダーからすべてのファイルを削除しました。

Visual Studio を再度開くと、すべてのパッケージを最初から再インストールし始めていました。

最後に git-diff を実行したところ、結果は次のようになりました。

$ git diff App.config
diff --git a/App.config
index ceec0aa..8937482 100644
--- a/App.config
+++ b/App.config
@@ -18,7 +18,7 @@
       </dependentAssembly>
       <dependentAssembly>
         <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
+        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
       </dependentAssembly>
     </assemblyBinding>
   </runtime>


$ git diff Web.config
diff --git a/Web.config b/Web.config
index 7287953..f196254 100644
--- a/Web.config
+++ b/Web.config
@@ -106,7 +106,7 @@
       </dependentAssembly>
       <dependentAssembly>
         <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
+        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
       </dependentAssembly>
     </assemblyBinding>
   </runtime>


$ git diff myproj.csproj
diff --git a/myproj.csproj b/myproj.csproj
index 12987d0..a214bf7 100644
--- a/myproj.csproj
+++ b/myproj.csproj
@@ -24,6 +24,7 @@
     </SccAuxPath>
     <SccProvider>
     </SccProvider>
+    <WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -47,8 +48,8 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Antlr3.Runtime, Version=3.3.1.7705, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processo
-      <HintPath>..\packages\WebGrease.1.3.0\lib\Antlr3.Runtime.dll</HintPath>
+    <Reference Include="Antlr3.Runtime">
+      <HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
     </Reference>
     <Reference Include="Kendo.Mvc">
       <HintPath>..\Dll\kendo\Kendo.Mvc.dll</HintPath>
@@ -84,9 +85,8 @@
       <Private>True</Private>
       <HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
     </Reference>
-    <Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, pr
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.0\lib\net40\System.Web.Optimization.dll</HintPath>
+    <Reference Include="System.Web.Optimization">
+      <HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.2\lib\net40\System.Web.Optimization.dll</HintPath>
     </Reference>
     <Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processor
       <Private>True</Private>
@@ -129,9 +129,8 @@
       <Private>True</Private>
       <HintPath>..\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.WebRequest.dll</HintPath>
     </Reference>
-    <Reference Include="WebGrease, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchite
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\WebGrease.1.3.0\lib\WebGrease.dll</HintPath>
+    <Reference Include="WebGrease">
+      <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -760,7 +759,6 @@
     <Content Include="Views\Home\Index.cshtml" />
     <Content Include="Views\Shared\Error.cshtml" />
     <Content Include="Views\Shared\_LoginPartial.cshtml" />
-    <Content Include="Views\Shared\_Layout.cshtml" />
     <Content Include="Views\Web.config" />
   </ItemGroup>
   <ItemGroup>
@@ -800,6 +798,7 @@
       <Generator>RazorGenerator</Generator>
       <LastGenOutput>index1.generated.cs</LastGenOutput>
     </Content>
+    <Content Include="Views\Shared\_Layout.cshtml" />
   </ItemGroup>
   <PropertyGroup>
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

特に、App.config と Web.config には次の違いがあります。

       <dependentAssembly>
         <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
+        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
       </dependentAssembly>
     </assemblyBinding>
于 2013-11-19T11:28:34.967 に答える