web-dev-qa-db-fra.com

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)

Après avoir signé les assemblys tiers et les avoir ajoutés au GAC, le message d'erreur ci-dessous s'affiche: L'entrée du journal du classeur d'assemblage indique également cette erreur

Il dit que les assemblages qui ne correspondent pas ne savent pas à quel point le brouillage est important lorsque j'ai supprimé tous les obj et bin fold et batch construit l'application + réimporté les dll.

 Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\WebDev.WebServer40.exe

--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: User = AKBARCA\user

LOG: DisplayName = ClubStarterKit.Core, Version=3.0.1.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)

LOG: Appbase = 

file:///C:/Users/user/Desktop/NhibernateMediumTrust/NhibernateMediumUpgrade/direct/clubstar

terkit v3 preview/ClubStarterKit.Web/

LOG: DEVPATH = C:\ProgramData\Red Gate\.NET Reflector\DevPath

LOG: Initial PrivatePath = 

C:\Users\user\Desktop\NhibernateMediumTrust\NhibernateMediumUpgrade\direct\clubstarterkit v3 preview\ClubStarterKit.Web\bin
Calling Assembly : ClubStarterKit.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
12
lioni jordan

D'après mon expérience, cela se produit généralement après la publication de votre application et lorsque différentes versions des packages de nuget sont en cours d'utilisation. Si cela se produit également, la meilleure solution que j'ai trouvée pour y remédier consiste à cliquer avec le bouton droit de la souris sur la solution (et non sur les projets individuels) et à choisir "Gérer les paquets de pépites". Ensuite, localisez l’ensemble défectueux dans les packages installés. Vous le verrez probablement répertorié plusieurs fois. Cliquez sur "Gérer" sur chacune des anciennes versions du paquet et décochez tous vos projets. Une fois, seule la dernière version du paquet reste dans la liste. Cliquez sur "Gérer" sur celui-ci et revérifier tous les projets qui ont besoin du paquet. Cela les mettra tous à niveau pour utiliser la même version du paquet et devrait résoudre votre erreur d'incompatibilité.

31
Chris Pratt

J'ai fait face à un problème similaire. Dans mon cas, j'avais plusieurs projets dans ma solution. 

L'un des projets faisait référence à EntityFramework 4.0 et ce projet faisait l'objet d'un autre projet faisant référence à EntityFramework 5.0. Je les ai synchronisés et le problème a disparu.

5
Brij

Hum .... J'ai fait face à quelque chose de similaire avec le même message d'erreur.

Dans mon cas, j'ai mis à jour manuellement la version des assemblys.

The error message

Dans l'Assemblée référencée, j'avais une autre version ...

Donc, je l'ai mis à jour dans le web.config.

Properies of the DLL

Cela a résolu mon problème.

Votre === Pre-bind state information === semble incomplet . Généralement, il montre l'exécution et la dernière ligne indique l'erreur, aussi pouvons-nous vous aider à partager nos expériences ... Exemple: Last line of the LOG info

J'espère que quelqu'un d'autre confronté à ce problème trouvera cela utile.

3
Lincoln Pires

Dans mon cas, l’erreur se produit lorsque la version spécifiée dans le <bindingRedirect> de web.config de l’Assembly dépendant (par exemple, Newtonsoft.Json) ne correspond pas à la version actuellement dans le dossier bin. Une fois le numéro de version du fichier web.config mis à jour, le problème est résolu.

screenshot of web.config

2
C. Deng

Lorsque j’ai rencontré ce problème dans le passé, j’ai supprimé toutes les dll de mon projet du gac, reconstruit la solution, puis iisreset et le problème a été résolu.

1
bresleveloper

J'avais une cause différente: dans mon cas, j'avais déjà utilisé différentes versions de paquets de pépites et j'avais un app.config qui, pour une raison quelconque, avait été généré automatiquement avec ce type de contenu:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.1.0" />
  </dependentAssembly>

Donc, je n'avais que la version 1.1.0.0 installée, mais à cause de cette instruction de redirection, elle recherchait la version 1.1.1.0, même si Visual Studio disposait du nuget pour la version 1.1.0.0. Changer la newVersion en 1.1.0.0 a tout corrigé:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.0.0" />
  </dependentAssembly>
0
iJungleBoy

Une façon de résoudre ce problème pourrait être d'aller sous "Gérer les paquets NuGet pour la solution" en faisant un clic droit dans l'explorateur de solutions. Une fois là, allez à "Consolidate" et trouvez le paquet qui cause les problèmes. Assurez-vous que tous les projets de la solution utilisent la même version. 

 enter image description here

0
Mauro Bilotti