web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'WebGrease' l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly

Ce problème a de nombreuses solutions, veuillez lire toutes les réponses ci-dessous, elles pourraient également vous aider à résoudre votre problème. Si vous trouvez une nouvelle façon de résoudre ce problème, veuillez documenter dans votre réponse

J'essaie d'ajouter System.Web.Optimization à ma solution ASP.NET Web Forms. J'ai ajouté Microsoft ASP.NET Web Optimization Framework via les packages NuGet. Il a ajouté Microsoft.Web.Infrastracture et WebGrease (1.5.2) aux références.

Cependant, quand je cours

<%= System.Web.Optimization.Scripts.Render("~/bundles/js")%>

Je reçois une erreur d'exécution

Could not load file or Assembly 'WebGrease, Version=1.5.1.25624, 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)

J'ai essayé d'ajouter assemblyBinding au Web.Config

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

Mais sans aucune chance.

J'ai remarqué que la configuration Web de mon site Web contient cette ligne

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

Si je le remplace par

 <configuration>

Ensuite, tout fonctionne et je ne reçois pas l'erreur d'exécution. Malheureusement, j'ai besoin des xmlns. D'autres composantes de mon projet en dépendent.

Pourquoi l'optimisation essaierait-elle de charger une version plus ancienne lorsque le schéma pointe vers la version 2.0? Existe-t-il un moyen de le forcer à charger le dernier ou le seul WebGrease.dll disponible?

Que puis-je essayer sans changer le

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

Merci pour toute aide que vous pouvez fournir!

Modifier: 1) Joindre le résultat FusionLog. Ce sera peut-être utile

=== Pre-bind state information ===
LOG: User = [USER]
LOG: DisplayName = WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Projects/PROJECT_NAME/trunk/www.PROJECT_NAME.com/
LOG: Initial PrivatePath = C:\Projects\PROJECT_NAME\trunk\www.PROJECT_NAME.com\bin
Calling Assembly : System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\PROJECT_NAME\trunk\www.PROJECT_NAME.com\web.config
LOG: Using Host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35

2) Confirmé, le problème est en

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

Cependant, je ne comprends pas pourquoi

17
Roman Mik

Enfin, le problème était dans <configuration xmlns="http://schemas.Microsoft.com/.NetConfiguration/v2.0">. Cela a provoqué la méthode Render pour charger l'assembly WebGrease incorrect.

La suppression des fichiers xmlns a résolu le problème pour moi.

16
Roman Mik

J'ai rencontré ce problème sur un serveur de prod, alors que tout fonctionnait bien sur la machine du développeur. Ces lignes ont aidé:

<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.0" newVersion="1.5.2.14234"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
24
Der_Meister

J'ai modifié mon fichier web.config pour que le newVersion = "1.0.0.0" corresponde à la version de mon fichier référencé:

<dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.0.0.0" />
  </dependentAssembly>
5
DaniDev

Juste au cas où cela aiderait quelqu'un, j'ai eu le même problème, mais j'ai trouvé qu'il était causé par un assembly dépendant de WebGrease, à savoir Antlr3. Il avait ajouté ce qui suit à l'élément runtime dans web.config lors de l'installation via NuGet:

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

La simple suppression de ce problème a résolu mon problème.

3
Dan Diplo

Dans mon cas, le problème s'est avéré être un XML Processing Instruction (PI) (<?blah ... ?>) dans mon fichier web.config. XML parfaitement légal! mais cela a fait apparaître ce message d'erreur et m'a fait chercher dans tous les mauvais endroits.

Mon web.config ressemblait à ce qui suit - notez le PI XML dans la section connectionStrings:

<configuration>
    ...
    <connectionStrings>
        <?blah ... ?>
        <add name="AppDb" ... />
    ...
    </connectionStrings>
    ...
    <runtime>
        <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
            ...
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
            </dependentAssembly>
            ...
        </assemblyBinding>
    </runtime>
    ...
</configuration>

Notez que le XML PI <?blah ... ?> était dans la section connectionStrings - c'est-à-dire loin de la section assemblyBinding, ou les entrées bindingRedirect pour WebGrease etc (qui étaient correctes! ).

1
Barumpus

rencontré le même problème dans le site de formulaires Web .net 4.5 simple mise à jour des paquets de nuget vers la dernière version m'a aidé.

1
Radekk

J'ai eu ce même problème, mais c'était le résultat de la copie d'une solution de mon ordinateur de développement local vers un lecteur en réseau où nous stockons nos projets. Je n'ai pas pu obtenir la référence pour fonctionner correctement lorsque j'ai ouvert la solution à partir d'un lecteur mappé et j'ai continué à recevoir cette erreur. La solution de contournement temporaire que j'ai trouvée pour mon problème spécifique était d'ouvrir la solution à partir de son chemin UNC et non de la lettre de lecteur mappée.

0
Pat Migliaccio