2009-06-05 9 views
6

J'ai quelques assemblages .Net, même version, même nom de fichier, mais situé à un autre endroit:L'Ordre des Assemblées en cours de chargement

  1. dossier Programme
  2. C: \ Windows
  3. C: \ Windows \ system32
  4. GAC

maintenant que l'assemblage de l'emplacement sera chargé en premier?

Répondre

4

ensembles .Net a différents ordres de recherche que les fenêtres régulières .dll. GAC sera vérifié la première chose seulement si l'assembly est fortement nommé signé. Si l'assembly n'est pas dans le nom gac/not strong signed, le dossier local est vérifié par la suite. C'est la fin de l'ordre de recherche .net assembly, 1,2 et 3 ci-dessus ne sont pas vérifiés.

Vous pouvez modifier l'emplacement d'affichage du fichier .net en ayant un fichier de configuration local pour votre application. En outre, this post in the microsoft.public.dotnet.framework.aspnet group contient également des informations très utiles. C: \ Windows et C: \ Windows \ System32 ne sont pas pertinents pour le sondage d'assembly géré.

+1

Cela peut valoir la peine de mettre à jour cela avec la recherche 'ProbingPath' – GETah

+0

" fortement nommé signé "voulez-vous dire fortement nommé ET signé? – user145400

0

Le cadre ne cherchera pas d'assemblages là-bas.

Il semble d'abord dans le GAC/Application Folder puis dans des dossiers pointés par les paramètres codebase/privatepath si cela est spécifié dans le fichier app.config. (Seuls les assemblys portant un nom fort peuvent être placés dans le GAC.) Lors de la vérification, il vérifie plusieurs combinaisons en ajoutant .dll ou .exe, en recherchant dans les dossiers nommés assembly.exe/.dll, la recherche d'assemblages ciblés pour des cultures spécifiques si nécessaire .

Un bon outil pour voir quels dossiers l'exécution a vérifié pour les échecs de résolution d'assembly est le Fusion Log Viewer. Entrez 'fuslogvw' à l'invite de commande VS. Il montre les entrées saisies par ApplicationName et Nom

Questions connexes