c# - vsdesigner - impossible de charger le fichier ou l'assembly powershell




Impossible de charger le fichier ou l'assembly ou l'une de ses dépendances (20)

Je rencontre un autre de ces problèmes "Impossible de charger le fichier ou l'assemblage ou l'une de ses dépendances".

Informations supplémentaires: Impossible de charger le fichier ou l'assembly 'Microsoft.Practices.Unity, Version = 1.2.0.0, Culture = Neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition de manifeste de l'assembly localisé ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)

Je n'ai aucune idée de ce qui cause cela ou comment je pourrais le déboguer pour trouver la cause.

J'ai fait une recherche dans mes catalogues de solutions fichiers .csproj, et chaque fois que j'ai Unity j'ai:

Référence Include = "Microsoft.Practices.Unity, Version = 2.0.414.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL"

Impossible de trouver n'importe quelle référence qui va contre 1.2.0.0 dans aucun de mes projets.

Des idées comment je devrais aller résoudre cela?

J'apprécierais également des conseils sur la façon de déboguer des problèmes comme celui-ci en général.


  1. Vérifiez si vous faites référence à un assemblage qui, à son tour, fait référence à une ancienne version de l'unité. Par exemple, supposons que vous ayez un assembly appelé ServiceLocator.dll qui nécessite une ancienne version de l'assembly Unity. Désormais, lorsque vous référencez le ServiceLocator vous devez lui fournir l'ancienne version de Unity, ce qui pose problème.

  2. Peut être le dossier de sortie où tous les projets construisent leurs assemblées, a une ancienne version de l'unité.

Vous pouvez utiliser FusLogVw pour savoir qui charge les anciens assemblages, juste définir un chemin pour le journal, et exécuter votre solution, puis vérifier (dans FusLogvw) la première ligne où l'assembly Unity est chargé, double-cliquez dessus et voir l'appel assemblage, et vous voilà.


A 99%, le problème de chargement de fichier ou d'assemblage ou de l'un de ses dépendances est dû à des dépendances! Je vous suggère de suivre ces étapes:

  1. Télécharger Dependency Walker à partir de http://www.dependencywalker.com/

  2. Lancez Dependency Walker et ouvrez la DLL (dans mon cas, NativeInterfaces.dll )

  3. Vous pouvez voir une ou plusieurs DLL avec l'erreur en rouge Erreur lors de l'ouverture du fichier ...

  4. Cela signifie que cette DLL est manquante dans votre système; dans mon cas, le nom de la DLL est MSVCR71.DLL

  5. Vous pouvez télécharger des dll manquants à partir de google et copier dans le bon chemin (dans mon cas, c:\windows\system32 )

  6. À ce stade, vous devez enregistrer la nouvelle DLL dans le GAC (Global Assembly Cache): ouvrez un terminal DOS et écrivez:

    cd \Windows\System32
    regsvr32 /i msvcr71.dll
    
  7. Redémarrez votre application!


Après a travaillé pour moi.

  • Supprimer les fichiers temporaires C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ fichiers temporaires ASP.NET
    • puis faites un clic droit sur Fichiers Asp.net temporaires> propriétés> sécurité et donnez un contrôle total à IIS et à tous les utilisateurs qui exécutent mon projet

Attention aux références contradictoires. Même après un nettoyage et une reconstruction, les références conflictuelles continueront à poser problème. Mon problème était entre AForge et Accord. J'ai supprimé les deux références, et j'ai rajouté les références re-choisissant la référence particulière (particulière à mon cas, juste Accord).


D'accord, cela peut sembler très stupide, mais voici comment j'ai résolu le problème après avoir essayé toutes les autres solutions et passer une nuit sur cette chose stupide.

Je recevais la même erreur avec une DLL manquante dans Bin Folder. J'ai essayé de supprimer, récupérer tout de Team Foundation Server mais ne fonctionnait pas. J'ai obtenu une copie du dossier Bin de mon ordinateur de bureau-matelocal, et l'ai remplacé. Cela n'a pas fonctionné non plus. Enfin, j'ai manuellement FTPed serveur, a obtenu la copie de DLL qui apparaissait comme manquant, puis il a commencé à montrer que le fichier suivant dans la séquence de la liste de fichiers est manquant.

J'ai donc ftped serveur obtenu tous les Dossier Bin, manuellement remplacé chaque fichier un par un. (Pas Ctrl + All et remplacer .. J'ai essayé: cela n'a pas fonctionné.) Et en quelque sorte cela a fonctionné ...


Dans mon cas, aucune des réponses proposées n'a fonctionné.

Voici ce qui a fonctionné pour moi:

  1. Supprimer la référence
  2. Renommez la DLL
  3. Importer à nouveau la référence

La deuxième étape était importante apparemment car elle n'a pas fonctionné sans elle.


Essayez de nettoyer les dossiers Debug et Release dans votre solution. Ensuite, retirez et ajoutez de nouveau l'unité.


Essayez de vérifier si la propriété "Copy to Local" de la référence est définie sur true et si la version spécifique est définie sur true. Ceci est pertinent pour les applications dans Visual Studio.


J'ai eu un problème similaire. La réponse de Junto résoudra le problème mais vous devriez noter un conseil important!

Dans l'unité version 2.1.505.2, AssemblyVersion et AssemblyFileVersion sont différents:

AssemblyFileVersion est utilisé par nuget mais CLR ne se soucie pas de AssemblyFileVersion et n'utilisera que AssemblyVersion !

Donc, pour la version 2.1.505.2, la redirection doit être appliquée à la version spécifiée dans AssemblyVersion: 2.1.505.0

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>

Voir aussi: Quelles sont les différences entre AssemblyVersion, AssemblyFileVersion et AssemblyInformationalVersion?


Je "Définir en tant que projet de démarrage" la bibliothèque / projet déchargé / unfound.

Puis l'a déployé.

Ça a marché!

Je pense qu'il n'a pas pu trouver le fichier .dll car il n'était pas dans l'assemblage au début.


Je ne sais pas si cela pourrait aider.

Vérifiez que le nom de l'assembly et l'espace de noms par défaut dans les propriétés de vos assemblages correspondent. Cela a résolu mon problème qui a donné la même erreur.


Ma solution pour .NET 4.0, en utilisant Enterprise Library 5, était d'ajouter une référence à:

Microsoft.Practices.Unity.Interception.dll


Merci Riddhi M. Suite a travaillé pour moi.

Supprimer les fichiers temporaires C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Fichiers temporaires ASP.NET Fermer VSTS et ouvrir à nouveau Supprimer et ajouter les mêmes DLL (Remarque: vous ajoutez les mêmes versions correspondantes)


Microsoft Enterprise Library (référencé par .NETTiers) était notre problème, qui faisait à son tour référence à une ancienne version de Unity. Pour résoudre le problème, nous avons utilisé la redirection de liaison suivante dans le fichier web.config:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Vous pouvez également mettre à jour la bibliothèque d'entreprise avec la dernière version.


Pour moi, reconstruire le jeu de l'unité sans Unity C # Proects Checkmark a fonctionné.


Si vous obtenez ce message d'erreur en ouvrant une application sur Windows XP, cela signifie d'abord que vous avez installé cette application parce qu'elle ne fonctionne pas sans Net Framework 4 et Service Pack 3. vous avez installé à la fois et encore une fois vous obtenez cette erreur, donc vous devez réinstaller cette application à nouveau, mais d'abord désinstaller à partir ajouter et supprimer

Si cela ne fonctionne pas s'il vous plaît ne me maltraitez pas. je suis aussi un junior


Vérifiez le fichier Web.config / App.config dans votre projet. Voyez si les numéros de version sont corrects.

<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />

Cela a fonctionné pour moi.


Vous devez supprimer votre fichier appname.dll de votre dossier de sortie. Nettoyer les dossiers de débogage et de libération. Reconstruire et copier dans le dossier de sortie régénéré dll.


Dans l'explorateur de solutions, cliquez avec le bouton droit de la souris sur le projet (pas de solution), dans l'onglet Construction, choisissez Cible de la plate-forme: "Tout processeur".


Ouvrez le Gestionnaire des services Internet

Sélectionner les pools d'applications

sélectionnez ensuite la piscine que vous utilisez

aller aux paramètres avancés (à droite)

Changez l'indicateur de l'activation de l'application 32 bits false à true.





compiler-errors