132 votes

Erreur CS1705 : "qui a une version supérieure à l'assemblage référencé".

Je me suis penché sur la question depuis un certain temps déjà et je n'ai pas réussi à la résoudre. Je reçois le message d'erreur suivant :

Compiler Error Message: CS1705: Assembly 'My.Model, Version=1.1.4422.23773, Culture=neutral, 
PublicKeyToken=bfde95ba233094b2' uses 
'Common, Version=3.3.4273.24368, Culture=neutral, PublicKeyToken=bfde95ba233094b2' 
which has a higher version than referenced assembly
'Common, Version=3.3.4269.17112, Culture=neutral, PublicKeyToken=bfde95ba233094b2'

c:\WINDOWS\assembly\GAC_MSIL\Common\3.3.4269.17112__bfde95ba233094b2\Common.dll: 
(Location of symbol related to previous error)

Le serveur web fonctionne sous Server 2003. Je suis allé à c : \windows\assembly et j'ai remarqué qu'il y avait 3 versions de Common.dll. La version la plus élevée était 3.3.4269.17112.

J'ai copié la dll avec la version : 3.3.4273.24368 dans le répertoire d'assemblage. J'ai ensuite recompilé et redéployé mon code (probablement trop, mais bon). Lorsque j'ai ouvert mon navigateur dans une nouvelle session et que je suis retourné à l'URL du site, j'ai obtenu le même message.

Je peux utiliser l'explorateur Windows et vérifier que la version supérieure de Common.dll est maintenant listée aussi.

Que puis-je faire de plus pour résoudre ce problème ? Je ne veux pas changer la référence dans mon assemblage pour pointer vers l'ancienne version.

83voto

Nicolas Raoul Points 13912

J'ai eu cette erreur parce que "Rebuild" ne reconstruisait pas vraiment.

Solution : Fermez Visual Studio, allez vraiment supprimer le dossier bin, puis reconstruisez, cela pourrait fonctionner mieux.

De plus, il arrive que Visual Studio mente sur les références, alors vérifiez le fichier HintPath dans votre .csproj des fichiers.

46voto

CountZero Points 789

Si vous utilisez NuGet, il vaut la peine de se rendre sur le site suivant "Gérer les paquets NuGet pour la solution". trouver le paquet qui pose problème et cliquer sur "update". Cela devrait alors amener tous les paquets à la dernière version et résoudre le problème.

Cela vaut la peine d'essayer car c'est rapide et facile.

42voto

Jakub Konecki Points 28852

3 idées à essayer :

  1. Assurez-vous que toutes vos dlls sont compilées avec la même version de Common.
  2. Vérifiez que vous avez des références de projet dans votre solution au lieu de références de fichier.
  3. Utilisez redirections obligatoires dans votre web.config. ( Version originale liée à la machine wayback )

34voto

Andrew Ngo Points 340

Mon problème était que j'avais 2 projets faisant référence à 2 copies différentes de la même dll qui avaient des versions différentes. J'ai résolu le problème en les supprimant tous les deux et en m'assurant qu'ils faisaient référence au même fichier dll.

13voto

jgong Points 101

Une cause possible est que le deuxième assemblage est installé dans le GAC alors que le premier assemblage, avec un numéro de version plus élevé, est ajouté aux Références du projet. Pour vérifier cela, double-cliquez sur l'assemblage dans les références du projet, et vérifiez s'il y a un autre assemblage avec le même nom dans le navigateur d'objets.

Si c'est le cas, utilisez l'utilitaire gacutil.exe pour désinstaller le deuxième assemblage du GAC. Par exemple, s'il s'agit d'assemblages 64 bits :

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\gacutil.exe -u <assembly_name>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X