2010-08-13 3 views
2

J'ai un projet construit avec .NET 4.0. J'ai beaucoup de code qui serait pénible à convertir en 2.0. J'essaie d'importer une DLL construite avec .NET 2.0. Tout fonctionne jusqu'à ce que j'essaie d'exécuter du code à partir de cette DLL. Il dit qu'il ne peut pas charger le module spécifié ou une de ses dépendancesComment lier un assembly .NET 2.0 dans une solution .NET 4.0

je Dumpbin.exe pour vérifier quelles dépendances il peut avoir

File Type: DLL 

    Section contains the following imports: 

    mscoree.dll 
       402000 Import Address Table 
       4057F0 Import Name Table 
        0 time date stamp 
        0 Index of first forwarder reference 

        0 _CorDllMain 

Donc je suppose ici que la dll tente de charger, mais ne peut pas trouver mscoree.dll à partir de la version 2.0 et soulève ainsi une exception.

J'ai essayé de charger mon module cible manuellement avec

Assembly asm = Assembly.LoadFrom(dllPath); 

débogueur Visual Studio liste maintenant le module comme chargé, mais il ne peut pas y accéder. Windows recherche des dizaines de "mscoree.dll" dispersés partout dans le répertoire c: \ windows, donc je suis un peu sceptique sur le chargement manuel.

Répondre

3

Vous n'êtes pas prêt de diagnostiquer le problème. Dumpbin.exe ne vous montre rien qu'il ne serait pas affiché pour tout assemblage géré. Ce n'est pas non plus un problème spécifique au mélange des dépendances CLR.

Utilisez fuslogvw.exe pour savoir quelle dépendance est manquante.

1
  1. Commencez par trouver toutes ses dépendances. Le fait que vous ne les ayez pas répertoriés ici est troublant.
  2. Avez-vous une application référençant directement toutes les dépendances.
Questions connexes