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 :)

Liker777
la source
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

Alex
la source
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.

Thomas
la source
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.

Sachin Kainth
la source
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**.
voidsstr
la source
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 \

Andy
la source
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

mégz
la source
... 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

Rakin
la source
3

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

Merci

Comme si
la source
3

Effacez simplement ce dossier: (uniquement Windows x64)

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

pixparker
la source
2

Merci Alex, votre deuxième point m'a aidé à résoudre ce problème.

Il semble que, sauf si vous exécutez Visual Studio en tant qu'administrateur dans Windows 7, il stocke vos fichiers temporaires localement plutôt que les fichiers C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET.

Voir le blog suivant: http://www.dotnetscraps.com/dotnetscraps/post/Location-of-Temporary-ASPNET-files-in-Vista-or-Windows-7.aspx

Fourmi
la source
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.

LiamB
la source
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.

Nemo
la source
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

atik sarker
la source
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.

RBT
la source
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.

Stephen Ebichondo
la source
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)) .

SAinCA
la source
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

Hossein Hajizadeh
la source
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.

Dave Russell
la source
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.

mannequin
la source
0

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

Kaushal
la source
0

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

Eriendel
la source
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.

Vijay Kumbhoje
la source
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.

h3n
la source
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).

rouillé
la source
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\
Caleb Mauer
la source
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é.

Shreya Singh
la source