web-dev-qa-db-fra.com

La mise à niveau de WebGrease vers la version 1.3.0 génère une erreur

Lors de la mise à niveau de WebGrease vers la version 1.3.0, une erreur est générée:

Impossible de charger le fichier ou l'assembly 'WebGrease, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

Erreur de source: 

Line 6:      <title>@ViewBag.Title</title>
Line 7:      @Styles.Render("~/Content/bundles/bootstrap")

Comment résoudre cette erreur.

43
Neeraj Mude

Voici la réponse qui a fonctionné pour moi, et c'est une combinaison de certaines des réponses ci-dessus . Commencez par installer/désinstaller/réinstaller les packages suivants:

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

Faites ensuite une copie du contenu de ~/Views/Shared/_Layout.cshtml Supprimez le fichier _Layout.cshtml, recréez-le et collez-le à nouveau.

c'est la solution finale qui a fonctionné pour moi.

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>

Remplacez le code supérieur dans Web.config par le suivant

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

Il semble que vous ayez une référence à une version plus ancienne (1.0.0.0?) De Assembly (en supposant que la version actuelle est 1.3.0.0). Dans ce cas, vous avez besoin de Assembly Redirect dans web.config ou, encore mieux, de recompiler vos fichiers binaires pour utiliser la dernière version.

Une autre possibilité si la dernière version partage la même version d’Assembly que l’ancienne (1.0.0.0), vous devez recompiler votre code pour utiliser l’Assembly correct et vous assurer qu’une copie correcte est utilisée (recherchez la mauvaise version dans GAC, utilisez fuslogv pour rechercher quel fichier exact a causé l'erreur).

4
Alexei Levenkov

Une combinaison des éléments suivants a résolu le problème pour moi. Tout d'abord, en exécutant les commandes suivantes sur la ligne de commande du gestionnaire de packages (similaire à la réponse fournie par sec_goat, mais pas exactement identique):

Uninstall-Package Microsoft.AspNet.Web.Optimization
Uninstall-Package WebGrease
Install-Package Microsoft.AspNet.Web.Optimization
Update-Package WebGrease

Ensuite, comme Hriju, je devais changer cette ligne dans mon web.config:

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

dans ceci:

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

J'ai eu le même problème. Un autre développeur a mis à niveau le package WebGrease (ainsi que d'autres), mais quelque chose n'a pas été synchronisé ni enregistré. J'ai modifié le fichier de package pour supprimer les références au package existant. Ensuite, j'ai réinstallé via le gestionnaire de paquets. Enfin, j'ai mis à jour les paquets.

Il semble que les packages ne seront ni installés ni mis à jour si le fichier packages.config ne correspond pas aux fichiers (y compris les versions appropriées) de votre projet. Aucune erreur n'est donnée dans le gestionnaire de packages, cependant, il ne parvient pas à mettre à jour ou à installer les packages.

3
roadsunknown

La redirection de liaison qui a fonctionné pour moi:

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

la différence subtile est que je n'ai pas inclus cette version (1.3.0.0) dans oldVersion attr.

échec au gâteau!

2

J'ai eu un problème similaire, sauf que ce n'était pas une erreur mais un avertissement. Après la mise à jour de WebGrease vers la version 1.3.0, une génération place la source d'avertissement dans la déclaration. Après avoir vérifié que mon fichier web.config était correctement redirigé vers l'Assemblée, j'ai finalement créé une nouvelle vue _Layout.cshtml et enregistré sur l'ancien fichier avec le même balisage de rasoir que précédemment (copier/coller). Après cela, l'avertissement est parti.

Je ne suis pas certain de la nature de l'avertissement, mais essayez de copier votre code dans votre fichier, de le coller dans un nouveau fichier et de remplacer le code d'origine.

Si quelqu'un a une idée de la raison pour laquelle cela fonctionne, je suis tout ouïe.

1
nwayve

Pour un projet d'API Web, je travaille sur ce qui a vraiment fonctionné:

  1. Ouvrez le gestionnaire de paquets NuGet, cliquez dans Installed packages, puis désinstallez Microsoft.AspNet.Web.Optimization. Il vous invite à supprimer WebGrease 1.1.0. Hit Yes.

  2. Maintenant, réinstallez-le en cliquant sur l'onglet En ligne de NuGet et recherchez Microsoft.AspNet.Web.Optimization.

Maintenant tout fonctionne comme prévu.

1

Dans mon cas, toutes ces méthodes ne fonctionnaient pas. Enfin, je résous ce problème en désinstallant les packages Microsoft.AspNet.Web.Optimization et WebGrease via le Gestionnaire de packages, puis j'ouvre mon fichier de projet (.csproj) dans le bloc-notes et supprime toutes les entrées liées à ces deux packages, ce qui prouve qu'il y avait un problème. Finalement, je réinstalle ces deux paquets via le gestionnaire de paquets et lance le projet. Tout le travail va bien maintenant.

0
Mateusz

Voici à quoi ma section d'exécution ressemble et cela fonctionne 

<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

Merci à @roadsunknown. Ma configuration a été endommagée après le gel de ma machine hôte, ce qui a empêché mon VM de s’éteindre correctement. Pour résoudre ce problème, j'ai désinstallé Microsoft.AspNet.Web.Optimization via NuGet, puis je devais supprimer la référence à WebGrease dans packages.config, puis j'ai réinstallé Microsoft.AspNet.Web.Optimization via NuGet.

0
Paul Angelno

Même affaire que Hriju et Nathan (désinstaller, réinstaller et mettre à jour), mais au lieu d'omettre l'attribut newVersion, je l'ai conservé. Mais puisque WebGrease est passé de la version 1.1.0 à la version 1.3.0, la version 1.2.0 n’était plus nécessaire (comme l’avait jenson-button-event) (bonne chance à JB en Espagne, au fait).

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

Pédant? Peut-être, mais c'est toujours dans les détails, non? Cela a résolu le problème pour moi.

Quoi qu'il en soit, espérez qu'ils le feront dès la prochaine mise à jour.

0
Bishop

Pour remédier à cela, je n’ai fait que mettre à jour le fichier 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>

À votre santé!!!

0
Ifeanyi Chukwu