Impossible de charger le fichier ou l'assembly… Le paramètre est incorrect


211

Récemment, j'ai rencontré l'exception suivante à la solution C #:

Erreur 2 Impossible de charger le fichier ou l'assembly «Newtonsoft.Json, version = 3.5.0.0, Culture = neutre, PublicKeyToken = b9a188c8922137c6» ou l'une de ses dépendances. Le paramètre est incorrect. (Exception de HRESULT: 0x80070057 (E_INVALIDARG))

Cela ne dépend ni de mon code ni du nom de l'assembly (comme Newtonsoft.Jsondans ce cas).

Lorsque je supprime cette DLL de la solution, le compilateur en parle d'une autre dans la même exception. Je suppose donc que quelque chose doit être éteint / allumé sur mon PC :)


3
Non. Il s'agit soit d'une erreur de compilation, soit d'une exception d'exécution. Je soupçonne ce dernier. Veuillez être plus clair.
leppie

2
J'ai également fait face à la même exception, mais j'ai réussi à le corriger avec la solution de Thomas. Le problème était dû à un arrêt incorrect du système en raison d'une panne de courant
Sandeep

Réponses:


346

Ressemble à un assemblage corrompu référencé.

Clarifier les deux:

  1. le dossier \ bin de votre projet

  2. le dossier temporaire (devrait être C:\Users\your_username\AppData\Local\Temp\Temporary ASP.NET Filesdans Windows 7)

et voyez si l'erreur persiste


3
alex merci beaucoup pour cela! la deuxième chose a aidé: j'ai nettoyé le répertoire temporaire des fichiers ASP.NEt)
Liker777

heureux d'entendre que cela fonctionne. n'oubliez pas d'accepter la réponse si cela a aidé :)
Alex

9
voir la réponse de @Thomas pour les autres emplacements à supprimer (ce qui a fonctionné pour moi)
Simon_Weaver

3
Merci. L'effacement du dossier temporaire de l'utilisateur après un crash dur a résolu le problème pour moi.
Petrus Theron

13
% TEMP% \ Fichiers ASP.NET temporaires C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Fichiers ASP.NET temporaires C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Fichiers ASP.NET temporaires C : \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Fichiers ASP.NET temporaires C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Fichiers ASP.NET temporaires C: /Windows/Microsoft.NET/Framework/ v4.0.30319 / Fichiers ASP.NET temporaires Cette liste s'agrandira comme si vous disposiez d'autres versions du .NetFramework. Réponse Src: stackoverflow.com/a/16033324/1724777 stackoverflow.com/a/11743430/1724777 Raison du problème: BLUE_SCREEN_OF_DEATH
NavaRajan

286

Selon que vous utilisez X64, vous devrez peut-être nettoyer quelques emplacements supplémentaires. Le nettoyage de mon annuaire d'utilisateurs n'était pas suffisant.

  1. % TEMP% \ Fichiers ASP.NET temporaires
  2. C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Fichiers ASP.NET temporaires
  3. C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Fichiers ASP.NET temporaires
  4. C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Fichiers ASP.NET temporaires
  5. C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Fichiers ASP.NET temporaires

Cette liste augmentera comme si vous aviez d'autres versions du framework installées.


72
vous pourriez avoir besoin de le faire si votre ordinateur a un écran bleu lors de la compilation
Simon_Weaver

2
+1 Addition bien compilée à la réponse. Cela m'a corrigé, merci
Ralph Lavelle

7
Cela semble être la solution si vous exécutez Visual Studio en tant qu'administrateur lorsque votre ordinateur tombe en panne ou, si vous êtes aussi stupide que moi, lorsque votre batterie est épuisée.
Sav

4
OMG! J'ai obtenu plus de 4 Go de mes projets préhistoriques dans ces endroits! Cette chose ne nettoie-t-elle jamais?!?! Merci!
user2173353

2
Je voulais juste vous faire savoir que plus de 2 ans plus tard, ce message aide toujours les gens. Merci beaucoup.
Laurence Frost

42

Je devais effacer

C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files

Ce n'est qu'alors que le problème a été résolu.


1
Cette réponse a également fonctionné pour moi, avec une machine Win 7 64 bits hébergeant MVC 4 dans IIS Express
Ben H

13

Pour savoir quoi effacer à coup sûr - ajoutez la clé de registre suivante:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog (DWord set to 1).

Ensuite, vous verrez la sortie comme ci-dessous. Cela vous indique où asp.net tente de charger vos DLL. Effacez ce répertoire.

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\app\AtlasAdvisor\web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet.DLL.**
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet/Avanade.ViddlerNet.DLL**.

3
Oh et aussi, une réinitialisation IIS était nécessaire pour que je puisse voir les chemins.
Landon Poch

Où ce journal s'affiche-t-il?
Luke Rice du

Le journal s'affiche dans la sortie d'erreur lorsqu'une exception se produit
voidsstr

12

Effacez les fichiers de framework temporaires pour votre projet dans: -

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Fichiers ASP.NET temporaires \


5

Vous pouvez également effacer le répertoire des packages et autoriser NuGet à télécharger à nouveau les packages manquants

cela a résolu le problème pour moi


... et moi, même si je viens de supprimer le répertoire du package incriminé.
Phil Cooper

J'ai supprimé les temps dans AppData temp & c: \ ... \ micorosoft.net \ .. \ temp, iisreset, ... tout a été modifié ci-dessus. mais ne fonctionne pas avec moi. Une fois que j'ai supprimé tous les paquets et les ai restaurés ... cela fonctionne avec moi ... merci beaucoup: D
bunjeeb

@bunjeeb c'est un mec de plaisir :)
megz

4

Supprimez tous les fichiers de ces dossiers.

C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files C: /Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files


3

Obtenir un nouvel ensemble de binaires à partir du contrôle de code source a aidé.

Merci


3

Effacez simplement ce dossier: (uniquement Windows x64)

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Fichiers ASP.NET temporaires



2

J'ai eu le même problème ici - les solutions ci-dessus n'ont pas fonctionné. Le problème était avec ActionMailer. J'ai exécuté les commandes de désinstallation et d'installation de nuget suivantes

uninstall-package ActionMailer
install-package ActionMailer

J'ai résolu mes problèmes, j'espère que cela aidera quelqu'un d'autre.


2

Cela peut se produire lors du référencement des DLL de wrapper COM. Dans votre projet Visual Studio, sous Références, sélectionnez les DLL d'encapsuleur COM référencées et assurez-vous qu'elles ont les valeurs de propriété suivantes: "Embed Interop Types": False et "Specific Version": False.


Ceci est une excellente réponse et devrait obtenir plus de votes positifs. Toutes les autres réponses tiennent pour acquis le contexte ASP.NET. Cependant, j'ai eu la même exception déclenchée par un appel COM dans une application console simple; cela a parfaitement fonctionné pour moi. Merci Monsieur.
alexlomba87

2

Je viens de supprimer mes données temporaires d'application de ce chemin

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files

Résolution des problèmes


2

Je vois que de nombreux techniciens ont publié des informations sur la suppression des répertoires temporaires du runtime ASP .Net se rapportant à chaque framework .Net hébergé sur votre machine, comme dans cette réponse. Mais je crois que nous devrions connaître la logistique claire pour savoir pourquoi nous devons effacer aveuglément tous les répertoires de travail temporaires de tous les cadres .Net. Selon moi, cela ne devrait pas être le cas.

Mon conseil serait que vous devriez essayer une approche de suppression de répertoire pointé pour résoudre ce problème. Comment sauriez-vous quel répertoire effacer?

  1. Accédez à IIS et cliquez avec le bouton droit sur le nœud de votre site Web dans le volet de navigation de gauche pour ouvrir le menu contextuel. Dans le menu contextuel, pointez sur Manage Application-> Advanced Settings...pour ouvrir la Advanced Settingsfenêtre.
  2. Vérifiez le pool d'applications auquel votre site Web est affecté. Dans mon cas, c'est DefaultAppPoolcomme indiqué ci-dessous:

entrez la description de l'image ici

  1. Maintenant, allez au Application Poolsnœud dans la barre de navigation de gauche dans IIS. Vérifiez maintenant quelle version .Net CLR est exécutée par votre pool d'applications. Dans mon cas, c'est la v4.0 comme indiqué ci-dessous:

entrez la description de l'image ici

Étant donné que la version CLR hébergée par mon pool d'applications est la v4.0, j'ai donc effacé uniquement les fichiers temporaires du dossier appartenant à ASP .NET v4.0 uniquement comme ci-dessous:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

Et c'est tout. Mon problème a été résolu.

Leçon apprise : cela indique que tous les fichiers temporaires utilisés par votre site Web ne sont pas dispersés dans plusieurs répertoires mais qu'ils sont à la fois référencés par votre pool d'applications. Vous devez donc effacer ce dossier spécifique uniquement.


1

La suppression des fichiers C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET a fonctionné pour moi. Penser à automatiser le processus de suppression pour éviter le problème à l'avenir.


1

Si vous utilisez les outils de données de SQL Server 2012, qui utilisent le shell VS2010 au 1er mai 2013, vérifiez vos paramètres Configuration Manager. Un changement de nom de serveur de Workflow à xCPWorkflow était suffisant pour produire exactement le même Le paramètre est incorrect (exception de HRESULT: 0x80070057 (E_INVALIDARG)) .



1

J'ai eu ce problème lors de la création du contrôleur dans MVC. J'ai changé la version .net du framework. Le problème a été résolu


0

Le problème concerne la version d'exécution .Net d'une bibliothèque de classes référencée (références étendues, sélectionnez la bibliothèque et vérifiez la «version d'exécution». J'ai eu un problème avec Antlr3.Runtime, après avoir mis à niveau mon projet Visual Studio vers la version 4.5. I utilisé NuGet pour désinstaller Microsoft ASP.NET Web Optimization Framework (en raison d'une chaîne de dépendances qui m'a empêché de désinstaller Antlr3 directement)

J'ai ensuite utilisé NuGet pour réinstaller le framework d'optimisation Web Microsoft ASP.NET. Cela a réinstallé les versions d'exécution correctes.


0

Dans mon cas, je voulais compiler une DLL visible COM. Le problème était qu'une ancienne version de cette DLL se trouvait ici:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

Ainsi, Visual Studio a chargé cette version au lieu de la nouvelle compilée, car il a essayé de l'enregistrer.


0

Effacez tous les fichiers du dossier temporaire (dossier C: \ Users \ nom_utilisateur \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ project)


0

Parfois, vous devez également nettoyer ce dossier: C: \ Windows \ Temp \ Temporary ASP.NET


0

J'ai rencontré la même erreur car l'application n'a pas trouvé de frameworks dépendants dans le C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\dossier. Je viens de réparer mon studio visuel qui a ajouté le cadre requis à l'emplacement ci-dessus et cela fonctionne bien.


0

Dans mon cas, la modification du numéro de port IISExpress dans les propriétés de mon projet a résolu le problème.


0

Si quelqu'un d'autre utilise le jeu d'outils WiX, j'ai découvert que mon projet d'installation avait une référence à un ancien projet qui avait récemment été supprimé de la solution. Cela m'a pris un certain temps à réaliser car il y avait un certain nombre de projets dans la solution que j'essayais de construire et le message n'indiquait pas quel projet échouait à construire (et nettoyait, qui échouait également).


0

J'ai eu des utilisateurs de Siemens Teamcenter 10 Client pour Microsoft Office obtenant la même erreur à propos d'une DLL différente. Aucune des autres réponses n'a fonctionné. La solution était de supprimer les dossiers dans

C:\Users\%username%\AppData\Local\assembly\

0

J'ai eu le même problème lors de l'ouverture du gestionnaire de paquets Nuget, j'ai supprimé tous les fichiers temporaires et construit le projet, cela a bien fonctionné.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.