web-dev-qa-db-fra.com

"Cet assemblage est construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé"

Je reçois le message d'erreur: "Cet assemblage est construit par un moteur d'exécution plus récent que le moteur d'exécution actuellement chargé et ne peut pas être chargé."

J'ai un projet .NET 4.0 dll appelé par un projet .NET 2.0. Existe-t-il un moyen de concilier la différence de cadre?

48
Nick Myers

J'ai un projet .NET 4.0 dll appelé par un projet .NET 2.0. Existe-t-il un moyen de concilier la différence de cadre?

Pas comme ça, non. Le .NET 4 CLR peut charger des assemblys .NET 2 (généralement - il existe quelques exceptions pour les assemblys en mode mixte, IIRC), mais pas l'inverse.

Vous devrez soit mettre à niveau le projet .NET 2 vers .NET 4, soit rétrograder le projet .NET 4 vers .NET 3.5 (ou une version antérieure).

43
Jon Skeet

Si vous avez déjà essayé toutes les autres solutions logiques de cette page, vérifiez-le. Dans mon app.config, j'avais une référence à un ancien framework. 

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

aurait du être 

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

L'onglet du projet affichait correctement la v4.0 mais le fichier app.config n'était pas affecté à notre dépôt avec cette modification. Pour résoudre ce problème, j'ai changé le framework en quelque chose d'autre, puis de nouveau en 4.0, ce qui a mis à jour mon fichier app.config. 

8
user2209195

J'ai le même message d'erreur. Je donnais

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\MyService\MyService.exe"

Au lieu de

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\MyService\MyService.exe"

7
Ziggler

Dans la mesure où une seule version de l'exécution peut être chargée dans un processus (bien que, comme d'autres l'ont mentionné, le chargement en arrière - 4.0 chargement 2.0 - soit correct), vous avez quelques options:

  • Mettre à niveau le projet .Net 2.0
  • Enveloppez le projet .Net 2.0 (si la source ne vous appartient pas)
  • Rétrograder le projet .Net 4.0
  • Chargez le projet .Net 4.0 dans son propre processus (je crois que cela peut fonctionner - mais cela demandera un peu d'effort, IMO)
5
IAbstract

Vous devrez soit mettre à niveau le projet .NET 2 vers .NET 4, soit rétrograder le projet .NET 4 vers .NET 3.5 (ou une version antérieure).

Comment mettre à niveau la version .net? Je ne sais pas où et quoi spécifier. S'il vous plaît aider.

Edit: .__ J'ai trouvé la réponse moi-même. Sélectionnez le projet, cliquez avec le bouton droit et choisissez Pages de propriétés. Là, vous pouvez sélectionner la version du framework. ou sélectionnez le projet et cliquez sur Maj + F4

5
Aditya Bajaj

Fait intéressant, j'ai continué à obtenir cette erreur. Ce qui a résolu le problème pour moi, c’était la création d’une configuration appelée gacutil.exe.config dans le même répertoire que gacutil.exe. Le contenu de la configuration (un fichier texte) était:

<?xml version ="1.0"?> <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup> </configuration>

Je poste ceci ici pour référence et demande si quelqu'un sait ce qui se passe réellement sous le capot. Je ne prétends pas que c'est la "bonne" façon de le faire

3
Prof

change INSTALL_UTIL_HOME répertoire de "C:\WINDOWS\Microsoft.NET\Framework\v2.0" en "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" pour installer le service. Cette erreur survient principalement pour la version manquante. 

2
Md. Kauser Ahmmed

J'ai aussi eu cette erreur, mais mon problème était que j'utilisais une version plus ancienne de GACUTIL.EXE.

Une fois que j'ai eu la bonne variable GACUTIL pour la dernière version .NET installée, cela a bien fonctionné.

L'erreur est trompeuse car elle donne l'impression que c'est la DLL que vous essayez de consigner comme incorrecte.

2
ObeOne

Cette erreur peut également être provoquée par la sélection de la version incorrecte du framework .NET comme configuration par défaut dans IIS.

Cliquez sur le nœud racine sous la vue Connexions (à gauche), puis sélectionnez Modifier la version .NET Framework à partir de Actions vue (à droite), puis sélectionnez la version .NET appropriée dans la liste déroulante.

1
Steven Wolfe

Son incompatibilité .net de version de la dll alors essayez de changer à partir de app.config ou web.config . Vous avez généralement un Framework plus élevé que inférieur, car lorsque nous ajoutons la dll du système à la version inférieure de l'application .net, elle a gagné t fonctionne donc il suffit de passer à la version supérieure

0
abdul basit

L'erreur était due à la façon dont j'ai configuré le pool d'applications dans IIS.

Mon service Web utilise un outil d'application configuré pour la version 2.0.50727. Cela a entraîné le message d'erreur.

Quand je l'ai changé en v4.0.30319, je n'ai pas eu l'erreur.

0
YbK

Lorsque j'ai changé la version de travail .NET du pool d'applications dans lequel le projet particulier était hébergé, j'ai pu résoudre ce problème.

Pool d'applications -> Paramètres avancés -> Version de travail du cadre .Net (modifiée de v2.0 à v4.0)

0
NidhinSPradeep