C#: impossible de charger les types de montage
Après l'ajout d'Lucene.net et Lucene.net Contrib C# MVC3, je reçois le message ci-dessous après le succès du premier run. Après réception de cette erreur, j'ai besoin de nettoyer complètement C:\Users\Me\AppData\Local\Temp\Temporary ASP.NET les Fichiers avant que je puisse l'exécuter à nouveau le projet.
J'ai essayé de supprimer les Lucene manuellement les fichiers (y compris les références dans mon projet), et de les réinstaller avec NuGet et à la main - mais c'est toujours la même situation; après que le projet a été exécuté une fois, je commence à être les erreurs suivantes:
Remarque: Contrib.Regex est une partie de Lucene.net Contrib.
Server Error in '/' Application.
Could not load types from assembly Contrib.Regex, Version=2.9.4.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, errors:
Exception: System.IO.FileLoadException: Could not load file or assembly 'Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181'
=== Pre-bind state information ===
LOG: User = rcw7\Me
LOG: DisplayName = Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181
(Fully-specified)
LOG: Appbase = file:///C:/Development/Projects/Foobar/Foobar/
LOG: Initial PrivatePath = C:\Development\Projects\Foobar\Foobar\bin
Calling assembly : Contrib.Regex, Version=2.9.4.0, Culture=neutral, PublicKeyToken=85089178b9ac3181.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Development\Projects\Foobar\Foobar\web.config
LOG: Using host configuration file: C:\Users\Me\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181
LOG: Attempting download of new URL file:///C:/Users/Me/AppData/Local/Temp/Temporary ASP.NET Files/root/e9b4cfa4/edfa73f8/Lucene.Net.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Exception: System.IO.FileLoadException: Could not load file or assembly 'Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181'
Sortie complète ici: http://pastebin.com/Vbu4VK7B
J'ai d'abord pensé que c'était un problème local à mon environnement de développement, mais après la reconstruction et de la copie du projet de notre serveur, j'obtiens les mêmes erreurs.
Toutes les suggestions sur les façons de surmonter cela? 🙂
OriginalL'auteur Saustrup | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
Comme il s'avère, la DLL de l'enfer n'était pas causé par mon propre ingérence dans les configurations et les bibliothèques compilées. Il était en fait causé par une collision entre mes nouvellement téléchargé la version de Lucene.NET et un peu daté version fournie avec l'Examiner, qui à son tour a été livré avec Umbraco 5.
Apparemment dépassés, livré Lucene.NET fini dans l'ombre cache (Temporaire ASP.NET les Fichiers), donc après la prochaine compilation ou de redémarrer IIS, l'exécution se briser. De compensation de l'ombre cache permettrait un succès exécution.
La chose bizarre c'est que je n'ai pu trouver aucune référence n'importe où dans la sortie de débogage qui fait allusion à la version obsolète de Lucene.NET soit avec un chemin d'accès au répertoire ou de numéro de version. Le problème a été repéré par la comparaison de la taille de fichier de l'ombre à la version copiée de Lucene.NET et la version que j'ai l'intention d'utiliser. Ils étaient hors, alors j'ai fait une recherche pour Lucene.NET.dll et trouvé celui livré avec l'Examiner dans le Umbraco arbre (en \App_Plugins\Examiner)
La solution rapide était simplement de la zip de les Examiner plug-in, donc Umbraco ne serais pas le voir. Qui me laisse sans Examiner plugin, mais je n'étais pas à l'utiliser de toute façon.
La droit solution serait probablement d'indiquer à l'application qu'il doit ignorer les versions précédentes de Lucene.NET mais je n'ai pas eu de chance jusqu'à présent. C'est ce que j'ai ajouté sur le web.config:
Cela ne semble pas avoir d'effet, et la version est obsolète toujours fini dans l'ombre cache. J'ai déplacé cette question ici: Comment puis-je faire Umbraco 5 ignorer la groupés (à Examiner) Lucene.NET
Merci pour votre aide et vos suggestions à faire, il m'a orienté dans la bonne direction! 🙂
OriginalL'auteur Saustrup
Cela signifie que vous avez les fichiers dans le GAC, qui sont une version différente et celles qui sont dans votre corbeille sont une autre version. Si votre demande est vers une version, et il est de trouver une autre. C'est à se confondre. Ce que vous voulez faire est de désinstaller Lucene.net. Après la désinstallation, regardez dans le c:\windows\assembly dossier et assurez-vous il n'y a pas de Lucene, les fichiers là. Si il y a un clic droit et désinstaller. Ensuite, vous pouvez l'installer à nouveau.
Je pense que le GAC est prioritaire sur toute autre emplacement.
C:\windows\assemblies est le GAC. Il remplace uniquement lorsqu'une référence n'a pas besoin d'une version spécifique, auquel cas la plus récente des deux est utilisé.
Ah, désolé, je voulais dire les priorités de la GAC (c:\windows\assemblies), mon local shadow copy (ASP.NET les Fichiers Temporaires) et de l'application répertoire bin.
OriginalL'auteur Alex Mendez
La
manifest definition does not match
, il y a un problème avec la résolution de l'assemblée. voir ce DONC, la question[modifier]
Assemblées sont chargés à partir de GAC, puis lib/bin répertoires au sein de votre application, puis les répertoires spécifiés par
<HintPath>
dans votre projet. Vérifiez que vous avezSpecific Version = True
etCopy Local = True
de référence dans la fenêtre des propriétés de l'.
Assemblées de la des sentiers privés au sein de votre application (lib/bin répertoires) sont les seuls à obtenir de l'ombre-copié. Il est possible Contrib.Regex est l'ombre-copié tout Lucene.NET le cœur n'est pas.
[/edit]
Le répertoire sous
ASP.NET Temporary Files
que vous remettez est l'ombre-répertoire de la copie. Il peut y avoir un problème avec la façon dont cette assemblée est en train d'être copié, ce qui peut être autorisations de votre compte de domaine. Vous pouvez tester cette théorie en changeant le cliché instantané de répertoire ou de la désactivation de shadowcopying complètement comme décrit ici:Qui ne devrait se produire que si vous avez un domaine d'application dans le pool d'applications une fois que vos fichiers ont été mis à jour. C'est parce que ce dernier met en cache le web.config par domaine d'application et si un domaine d'application en cache web.config a l'ancienne configuration, la mise à jour des fichiers en serait toujours à l'ombre-copié. Le nouveau domaine d'application ne devraient pas être affectées par la présente, bien que. Je voudrais redémarrer Visual Studio et IIS assurez-vous il n'y a pas vicié domaines d'application et voir si il arrive encore.
OriginalL'auteur Jim Schubert
Vous pouvez utiliser le Fusion Visionneuse Du Journal pour diagnostiquer ce problème. Il vous donne tous les détails des types de chargement a échoué similaire à celui que vous avez indiqué ici. Espérons que cette aide.
Veuillez assurez-vous que vous avez activé l'option "Activer toutes les lie pour le disque" case à cocher "Enregistrer les Paramètres" via le bouton 'Paramètres'. Faire "Actualiser", après l'exécution de votre application. Laissez-moi savoir si cela aide.
Ah, a obtenu travaille maintenant - a choisir le "Journal de tous les binds sur le disque" et spécifiez un journal personnalisé chemin comme C:\tmp - enquête 🙂
OriginalL'auteur RajN