Erreur CS1705: «qui a une version plus élevée que l’assembly référencé»

Je me suis penché là-dessus un peu maintenant et je ne l’ai pas résolu. Je reçois le message d’erreur suivant:

Comstackr 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 exécute Server 2003. Je suis allé dans c: \ windows \ assembly et j’ai en fait remarqué que trois versions de Common.dll étaient répertoriées. La plus haute version répertoriée était 3.3.4269.17112

J’ai copié le dll avec la version: 3.3.4273.24368 dans le répertoire de l’assembly. 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 revenu à l’URL du site, j’ai toujours le même message.

Je peux utiliser l’explorateur Windows et vérifier que le fichier Common.dll à version supérieure est désormais répertorié.

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

    3 idées pour vous d’essayer:

    1. Assurez-vous que tous vos DLL sont compilés 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 les redirections de liaison dans votre web.config. ( Version liée à l’origine à la machine de retour )

    (En plus des idées de Jakub)

    J’ai eu cette erreur parce que “Rebuild” n’était pas vraiment en reconstruction.
    Fermez Visual Studio, allez vraiment et supprimez le dossier bin, puis reconstruisez, cela pourrait mieux fonctionner.

    Aussi, parfois Visual Studio se situe sur des références, vérifiez donc le HintPath dans vos fichiers .csproj .

    Mon problème était que j’avais 2 projets référençant 2 copies différentes du même dll qui avaient des versions différentes. Je l’ai corrigé en les supprimant tous les deux et en m’assurant qu’ils faisaient référence au même fichier dll.

    Si vous utilisez NuGet, il vaut la peine d’aller sur «Gérer les packages NuGet pour solution» , en recherchant le paquet à l’origine des problèmes et en activant la mise à jour. Il doit ensuite amener tous les packages à la dernière version et résoudre le problème.

    Vaut le coup car c’est rapide et facile.

    Une des causes possibles est que le deuxième assembly est installé dans GAC tandis que le premier assembly, avec un numéro de version plus élevé, est ajouté aux références du projet. Pour vérifier cela, double-cliquez sur l’assembly dans les références du projet et vérifiez s’il existe un autre assembly avec le même nom dans l’explorateur d’objects.

    Si tel est le cas, utilisez l’utilitaire gacutil.exe pour désinstaller le deuxième assembly 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  

    Aller à la référence et append une nouvelle référence de votre fichier DLL qui est à l’origine du problème et assurez-vous que tous vos dlls sont compilés avec la même version. Ça marche pour moi j’espère que ça marche pour toi aussi.

    Mon équipe vient de rencontrer ce problème dans notre environnement de construction. Le problème était dû à une différence dans l’élément du fichier .csproj.

    Notre assemblage commun avait un chemin relatif correct vers le répertoire contenant nos assemblys de référence. L’assembly dépendant avait un chemin depuis une ancienne structure de répertoires. La solution a été compilée avec succès sur les machines de développement, car le GAC a résolu la référence de la dépendance à la version correcte installée dans C: \ Program Files. L’environnement de construction comportait une installation héritée de l’assemblage (même s’il n’y en avait pas eu) à laquelle il était renvoyé et donc l’erreur. La mise à jour du dans un éditeur de texte a corrigé le problème.

    A eu un problème similaire. Mon problème était que j’avais plusieurs projets dans la même solution, chacun référençant une version spécifique d’une DLL mais des versions différentes. La solution était de définir la version spécifique sur false dans toutes les propriétés de toutes les références.

    Je sais que cela a été demandé il y a un certain temps, après avoir essayé certaines des étapes ci-dessus. Ce qui m’a aidé, ce sont les étapes suivantes et cet article .

    J’ai localisé la référence et changé le PublicKeyToken de celui référencé à l’ancien.

    J’espère que cela aide aussi.

    Dossier de collection de dll à la main
    Si votre solution dispose d’un dossier de nettoyage pour les fichiers dll de différentes bibliothèques
    lib , source , libs , etc.
    Vous pouvez avoir ce problème si vous ouvrez votre solution (pour la première fois) dans Visual Studio. Et le dossier de collecte de votre DLL est manqué pour une raison quelconque ou un fichier dll concret est manqué.

    Visual Studio essaiera en silence de remplacer la référence de dll par quelque chose. Si VS réussit, une nouvelle référence sera persistante pour votre solution locale. Pas pour les autres clones / checkouts.

    C’est-à-dire que votre sera ignoré et que votre fichier de projet (.csproj) ne sera pas modifié.
    Comme exemple de moi

      False ..\..\..\lib\DocumentFormat.OpenXml.dll  

    Le DocumentFormat.OpenXml sera référencé à partir de C:\Program Files (x86)\Open XML SDK\V2.5\lib pas à partir d’un dossier solution\..\lib .

    Solution rapide

    • vérifier et restaurer votre dossier de collecte de dll
    • à partir de l’Explorateur de solutions, déchargez le projet , puis rechargez le projet .

    right Workaround consiste à migrer vers le gestionnaire de paquets NuGet.

    pour SharePoint, assurez-vous que sous votre dossier racine, vous n’avez pas de dossier “bin” avec vos DLL, si c’est le cas, supprimez-le. (et remplacez “Copy Local” par false dans VS).

    Dans votre projet, recherchez les références System.Web.Mvc vérifiez la version.

    Après cela, cliquez avec le bouton droit sur références -> assemblys et recherchez system.web.mvc et configurez- le.

    Le problème provoque les différentes versions de ces assemblys .

    Modifier: sélectionnez ensuite la gestion des packages NuGet et installez les mises à jour (si vous avez plusieurs projets, installez-leur également des mises à jour).

    La mise à jour importante est Microsoft.AspNet.Mvc et Microsoft.Net.Comstackrs ne l’oubliez pas!

    Dans notre équipe, nous travaillions sur différents ordinateurs avec git. Quelqu’un a mis à jour un dll et je ne l’ai pas eu. Je viens de mettre à jour les références de mes dépendances et le problème résolu.

    Les références dans un projet de site Web sont stockées dans son fichier web.config. Mettez à jour la référence pour corriger l’erreur.

    J’ai passé du temps à examiner toutes les références de ma solution avant de me rendre compte que j’avais oublié les références dans le fichier web.config.

    J’ai eu le même problème avec UnitTestingProject, où dans le MainProject j’utilisais “System.Web.Mvc, Version = 3.0.0.0” et dans UnitTestingProject j’utilisais “System.Web.Mvc, Version = 3.0.0.1”

    Modifiez les éléments suivants dans ..\packages\Microsoft.AspNet.Mvc.3.0.50813.1\lib\net40\System.Web.Mvc.dll

    J’ai eu un problème similaire, j’avais créé une DLL, c.-à-d., A.dll, qui faisait référence à une autre DLL, à savoir, B.dll.

    J’ai créé une application C.exe et référencé les DLL A.dll et B.dll.

    Solution – En supprimant la référence de B.dll de c.exe, j’ai pu résoudre le problème.

    J’espère que cela t’aides.