wake-up-neo.com

Datei oder Assembly 'WebGrease, Version = 1.5.1.25624, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine der Abhängigkeiten, die nicht geladen werden

Ich habe ein MVC4-Web-API-Projekt. Beim Ausführen des Serviceprojekts erhalte ich eine Fehlermeldung 

Datei oder Assembly 'WebGrease, Version = 1.5.1.25624, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden.

ich habe die WebGrease.dll-Datei hinzugefügt und immer noch den kommenden Fehler

und versuchte es mit dem Wechsel von web.config

<bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/>"

und

<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />

bitte beraten, was ich vermisse.

59
Jidheesh Rajan

Hast du es durch NuGet probiert?

Install-Package WebGrease -Version 1.5.1

oder

Install-Package WebGrease -Version 1.5.2
45

Ich weiß, dass es für das OP etwas spät ist, aber ich bin beim Testen des Pakets Bootstrap 3 für MVC 4 NuGet auf dasselbe Problem gestoßen, in meinem Fall hatte es etwas mit dem Microsoft.AspNet.Web zu tun. Optimierung package und konnte eine einfache Lösung finden.

Versuchen Sie, die folgenden Befehle in der Paket-Manager-Konsole auszuführen:

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

Die ersten beiden Zeilen hatten für mich keine Wirkung, da diese Pakete bereits vom Bootstrap 3 für MVC 4 - Paket installiert und aktualisiert wurden, aber ich habe sie trotzdem ausgeführt und dann alles kompiliert und lief großartig.

80
c0y0teX

Dieser Fehler ist darauf zurückzuführen, dass Microsoft.AspNet.Web.Optimization 1.1.3 intern auf WebGrease 1.5.1.25624 verweist, obwohl das Nuget-Paket selbst von WebGrease 1.5.2.14234 abhängig ist. Jemand hat beim Erstellen des Nuget-Pakets eindeutig versagt.

Um dieses Problem zu lösen, fügen Sie diese Assembly-Bindung in Ihren Web.Config ein.

  <dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.5.1.25624" newVersion="1.5.2.14234" />
  </dependentAssembly>
54
André Pena

Für mich funktionierte keines der obigen Szenarien. 

Nachdem ich zwei Tage versucht hatte, fand ich schließlich die Lösung. 

Was ich getan habe war, ich deinstallierte Microsoft.AspNet.Web.Optimization und WebGrease beide.

Ich wusste, dass sich diese Optimierungsbaugruppe intern auf WebGrease 1.5.1 bezieht. Also habe ich eine Version der Optimierung gewählt, die sich nicht auf WebGrease 1.5.1 bezieht.

Ich habe folgende Befehle ausgeführt, um alles zum Laufen zu bringen.

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

Ich hoffe, dass ich eine gute Hilfe für jemanden sein kann, für den die obige Lösung nicht funktioniert. 

Prost!

14
Parth Jani

Das Problem, das ich beobachtete, entsprach genau dem, was Jidheesh Rajan erwähnte. Durch die Aktualisierung des Pakets über den Nuget-Paketmanager (ohne Angabe der Version) wurde das Problem jedoch nicht behoben. Hier musste ich das Problem beheben. (Im Wesentlichen habe ich WebGrease auf Version 1.6 aktualisiert.)

Aktualisieren Sie WebGrease von der Paket-Manager-Konsole in Visual Studio explizit auf Version 1.6. Hier ist der Befehl. 

Install-Package WebGrease -Version 1.6

Ausgabe sollte sein 

Removing 'WebGrease 1.5.2' from {project name}

Hinzufügen von 'WebGrease 1.6.0' zu {Projektname} Erfolgreiches Hinzufügen von 'WebGrease 1.6.0' zu {Projektname} Deinstallieren von 'WebGrease 1.5.2' . Erfolgreiche Deinstallation von 'WebGrease 1.5.2' .

Dies endete mit der Aktualisierung von web.config mit 

    assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /
    bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" 

Dies führte auch dazu, dass eine Zeile aus der Datei csproj entfernt wurde.

<WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath>

und ein Update in diesem Knoten in der Datei csproj

<Reference Include="WebGrease, Version=1.5.2.14234, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>

zu diesem

<Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
  <Private>True</Private>
</Reference>

Denken Sie daran, dass auf meinem lokalen Computer kein Problem aufgetreten ist, sondern nur auf einem Bühnen-Webserver. Ich wollte mein Bestes geben, um das Problem zu beheben, ohne das Paket zu aktualisieren. Dies war jedoch die einzige Lösung, die ich hatte. 

7
joey

Ich habe eine Menge Dinge ausprobiert, aber das funktionierte für mich, manchmal Probleme bei der Montage, manchmal Probleme bei der Web.Optimisierung. Dies funktionierte für mich mit Microsoft.AspNet.Web.Optimization 1.1.3

Update-Package WebGrease -Version 1.6
5
Ali Umair

Wenn Sie webgrease umleiten, stellen Sie sicher, dass Sie kein applyTo -Attribut in Ihrem assemblyBinding -Element haben. Für mich habe ich es komplett entfernt.

 enter image description here

4
kenjamin

Alt aber gut...

Ich habe an einem MVC 5-Projekt in Visual Studio 2013 gearbeitet und hatte das gleiche Problem. Wir verwendeten Visual SVN für die Versionierung, und ich war der einzige in meinem Team, der dieses Problem hatte.

Das einzige, was für mich funktionierte, war folgendes:

  1. Deinstallieren Sie Microsoft.AspNet.Web.Optimization
  2. Führen Sie in der Nuget-Befehlseingabeaufforderung Folgendes aus: install-package Microsoft.AspNet.Web.Optimization -Version 1.0.0

Dadurch wird eine ältere Version von Web.Optimization installiert. Das Projekt verwies ursprünglich auf Version 1.1.0. Das Problem liegt nicht bei WebGrease, sondern bei der System.Web.Optimization.dll, die auf eine alte, vorhandene Version von WebGrease verweist.

Als ich das Projekt ausführte, funktionierte es, aber ich wollte dieselbe Paketversion wie der Rest des Teams verwenden. Also habe ich versucht zu aktualisieren, aber ... der Fehler zurückgegeben ...

Danach löschte ich das Projekt (wieder) und nahm es aus dem SVN zurück. Zu meiner Überraschung fing es an zu arbeiten ... Die Sache ist, dass ich das Projekt komplett gelöscht und es mehrmals aus dem SVN genommen habe. Ich habe sogar die DLLs von einem Kollegen genommen, weil ich dachte, dass ich vielleicht beschädigte Dateien von NuGet bekomme, aber ohne Erfolg. 

Ich hoffe, dass dies jemandem irgendwann helfen wird .. mit Visual Studio 2016 und MVC 8 :)

4
Alex Albu

Ich habe "Install-Package Microsoft.AspNet.Web.Optimization" (aktuelle Version ist 1.1.3) für starup web-project verwendet, das in der NuGet-Konsole nicht standardmäßig ausgewählt wurde. 

Aber NuGet hat eine neue app.config -Datei erstellt, obwohl web.config .__ ist. voraussichtlich aktualisiert werden.

Bei mir funktionierte es, um das _Entfernen des WebGrease-abhängigenAssembly -Elements von app.config in web.configs <runtime><assemblyBinding>...</assemblyBinding></runtime>.

2
Anton Lyhin

Da ich mit der Paket-Manager-Konsole nicht deinstallieren konnte, habe ich manuell zu packages.config gegangen und die ältere Version auskommentiert. 

2
user3557878

Ich hatte dieses Problem während einer Bereitstellung.

Ich habe WebGrease.dll in die Produktion kopiert, aber ich habe vergessen, die Datei Web.Config ebenfalls zu aktualisieren.

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

Dieser Fehler wurde bereits behoben. Die Situation war einfacher als ich dachte. Wenn Sie eine neue Version von System.Web.Optimization aus Nuget installieren, wird darauf verwiesen 

// Verweise: WebGrease, Version = 1.5.1.25624, Culture = neutral, PublicKeyToken = 31bf3856ad364e35

Zur gleichen Zeit habe ich WebGrease Version 1.5.2.14234. Beim Ausführen des Projekts ist der Fehler aufgetreten: Datei oder Assembly 'WebGrease, Version = 1.5.1.25624 konnte nicht geladen werden

Also, ich versuche diese Version auf Nuget zu überprüfen und war überrascht, dass es nicht so war ... aber als ich ein neues Projekt mit VS erstellte, bekam ich es. Um diesen Fehler zu hacken, versuche ich, ihn in GAC zu installieren ... aber GAC sagt mir, dass diese Bibliothek nicht abonniert ist. Downgrade auf System.Web.Optimization Version = 1.1.0.0, wobei der Verweis lautet:

// Verweise: WebGrease, Version = 1.3.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35

und 1.3.0.0 ist stark abonniert - hat mir geholfen. Es klappt. Nach dem Upgrade von webgrease habe ich Version = 1.6.5135.21930 und es hat perfekt funktioniert. 

Zum Schluss habe ich eine Meinung, als dieser Fehler (Datei oder Assembly WebGrease, Version = 1.5.1.25624 konnte nicht geladen werden), weil System.Web.Optimization lib auf die nicht abonnierte Webgrease-DLL-Version verweist.

1
faradzen

Die anderen Antworten haben das für mich nicht gelöst. Wir fügen ein neueres MVC 5-API-Projekt hinzu und es wurde nicht mit den älteren MVC 2-APIs gespielt. Nach dem Ausführen von Paketaktualisierungen wurde der genannte Fehler angezeigt. Die Lösung für mich bestand darin, die von NuGet in den web.configs der betreffenden Projekte hinzugefügten WebGrease-Referenzen zu entfernen.

So beheben Sie: Öffnen Sie die web.config des Projekts, das die Ausnahme auslöst, und löschen Sie die für WebGrease hinzugefügte Abhängigkeit, oder kommentieren Sie sie aus.

1
rjchicago

Hier ist was ich getan habe um es zu umgehen,

  1. Ich habe eine Kopie der Datei Web.config meines aktuellen (beschädigten Projekts) in "Corrupted-Web.Config" gespeichert. und schließen Sie die Projektlösung.
  2. Erstellt eine neue Anwendung mit dem gleichen Typ wie mein Projekt. nannte es ProjTemp.
  3. Speichern Sie das "PorjTemp" und führen Sie es aus. Speichern Sie dann eine Kopie der Web.Config unter "OrigTemp_Web.config".
  4. Schließen Sie die Web.config-Dateien.
  5. Öffnen Sie unter "ProjTemp" Extras -> "NuGet Package Manager" -> "Verwalten von NuGet Packages für Lösungen" ---> Wählen Sie die Option zum Aktualisieren aller zugehörigen Installierten Pakete aus. 6 Öffnen Sie jetzt die neu aktualisierte Datei "Web.config". Kopieren Sie die Informationen aus dem aktualisierten "" Starten von ".

<runtime>
        <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">  
             --- Copy this section to replace in the corrupted file.---
       </assemblyBinding>
</runtime>

  1. Speichern Sie Ihr Projekt. Wiederherstellen und ausführen. Hoffe das wird helfen! ....

Hier ist der korrigierte zum Beispiel VS2015.


<runtime>
           <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
                 <dependentAssembly>
                        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
                        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
                 </dependentAssembly>
                <dependentAssembly>
                        <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
                        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
              </dependentAssembly>
              <dependentAssembly>
                        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /
              </dependentAssembly>
              <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin" culture="neutral" publicKeyToken="31bf3856ad364e35" />
                        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" /
                </dependentAssembly>
                <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" culture="neutral" publicKeyToken="31bf3856ad364e35" />
                        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
                </dependentAssembly>
                <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" culture="neutral" publicKeyToken="31bf3856ad364e35" />
                        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
                 </dependentAssembly>
                 <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin.Security" culture="neutral" publicKeyToken="31bf3856ad364e35" />
                         <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
                  </dependentAssembly>
                  <dependentAssembly>
                         <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
                   </dependentAssembly>
          </assemblyBinding>
  </runtime>

das habe ich getan, um das Problem zu beheben, Solution on Github Sami, Oweis 4 Computer

0
Sami