2009-01-16 5 views
0

J'ai une application qui fait référence à l'assembly "Microsoft.Xna.Framework, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = 6d5c3888ef60e27d". J'ai créé un projet d'installation qui installe cet assembly dans le GAC (en exécutant le programme d'installation RedNA XNA)..net runtime essaie d'utiliser la mauvaise version d'un assembly

Cependant, lorsque cet assembly est utilisé pour la première fois, je reçois une exception pendant le JITing. J'ai ensuite essayé de Ngen l'image et NGEN affiche le message d'erreur suivant:

Failed to load dependency Microsoft.Xna.Framework of assembly x, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null because of the following 
error : The specified module could not be found. (Exception from HRESULT: 0x8007007E) 

Notez que la version 1.0.0.0 et l'PublicKeyToken manque, et l'assemblage ne bogus existe pas. Qu'est-ce qui peut amener le JITer et ngen à tenter de charger cette mauvaise version de l'assembly?

La version correcte de l'assembly est dans le GAC. J'ai ouvert mon image dans Reflector, et la référence s'affiche correctement. J'ai également vérifié qu'aucun autre assembly de la hiérarchie de dépendances ne charge la version 1.0.0.0 de bogus. En fait, la version 1.0.0.0 n'existe nulle part, ni sur la boîte de développement ni sur la machine de test. Cependant, lorsque vous tentez d'étendre la référence à Microsoft.Xna.Framework sur l'ordinateur de test, Reflector pense (correctement) que la version d'assembly référencée est 2.0.0.0, mais ne la trouve pas même si je la vois dans le GAC lors de l'affichage de c: \ windows \ assembly dans l'explorateur.

Aidez-nous s'il vous plaît.

+0

Copier Local sur la référence peut-être? – Pondidum

+0

L'assembly référencé est destiné à être dans le GAC, je peux le voir dans c: \ windows \ assembly. – erikkallen

Répondre

0

(note - modifier antidate re externes 1.0 dll)

Utilisez-vous des DLLs externes? Peut-être une DLL xna tierce qui fait référence à la version 1.0. Si cela est découvert en premier, tous les paris peuvent être désactivés. Essayez de regarder les dlls externes dans le réflecteur, voyez donc quelle version ils référencent. Vous pouvez également essayer d'ajouter un version policy pour la DLL xna.

+0

Merci pour la suggestion de la hiérarchie des dépendances, mais malheureusement cela n'a pas aidé. J'ai mis à jour la question. J'ai également vérifié l'option de politique de version, mais il semble qu'elle ne puisse pas m'aider puisque je dois changer à la fois la version et le jeton de clé publique. – erikkallen

Questions connexes