Upgrading WebGrease to version 1.3.0 causes error only on production server

前端 未结 2 364
礼貌的吻别
礼貌的吻别 2021-01-06 07:05

First off, answers to this question,do NOT solve my error:

Upgrading WebGrease to version 1.3.0 gets me error

I have the following bindingredirect on my prod

相关标签:
2条回答
  • 2021-01-06 07:20

    I got the same problem. I have a solution with different projects within. I have disinstalled Microsoft.AspNet.Web.Optimization and WebGrease from all projects, and deleted manually all bin and obj folders.

    Then I have installed Microsoft.AspNet.Web.Optimization only in the project that need this package.

    At this point I have deleted all files from packages folder.

    When I had opened Visual Studio again it had started to reinstall all packages from scratch.

    In the end I did a git-diff and this was the result:

    $ 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>
    

    In particular, both App.config and Web.config had these differences:

           <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>
    
    0 讨论(0)
  • 2021-01-06 07:23

    Finally figured out why this was not working for me despite other users saying that it was working for them.

    I had the following binding redirection in my web.config file to force the System.Web.Optimization assembly to use the newer version instead:

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

    It was just like other users had, but it didn't work. Then I used the fusion log viewer (Fuslogvw.exe) to figure out more information and discovered that the binding process didn't even look at the redirect instruction.

    Finally figured out that there must not be an XML namespace on the root ... . If I remove the following from my <configuration> element it works: xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"

    Also, just make sure you have the following XML namespace specified on the <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> element.

    Finally!!

    0 讨论(0)
提交回复
热议问题