2010-06-10 9 views
4

Ma bibliothèque de classes est compilée avec .NET 2.0 et fonctionne très bien chaque fois que j'essaie de la charger en tant que plug-in sous le runtime 2.0. Cependant, si l'application maître exécute le .NET 4.0 d'exécution, je reçois une exception, dès que les ressources doivent être accessibles:.NET 2.0 vs .NET 4.0 Erreur de chargement

Exception occurred during processing of command: Grasshopper 
Plug-in = Grasshopper 
Could not find file 'Grasshopper.resources'. 

CALL STACK 
at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark) 
at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark) 
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark) 
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark) 
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) 
at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream) 
at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture) 
at Grasshopper.My.Resources.Resources.get_GrasshopperBannerImage_Palette() in D:\dev\grasshopper\1.0\root\src\My Project\Resources.Designer.vb:line 1159 
at Grasshopper.GUI.GH_Banner.ExplicitBanner_Load(Object sender, EventArgs e) in D:\dev\grasshopper\1.0\root\src\GH_Banner.vb:line 14 
.... 

Qu'est-ce qui se passe et comment puis-je faire ma charge de projet sur tous les runtimes .NET ?

EDIT: Le problème était un AssemblyResolver que j'ai écrit qui a été confus lorsqu'on lui a demandé de charger "Grasshopper.resources". Il semble que .NET 4.0 gère le chargement des ressources différemment des runtimes précédentes ???

+3

Il est .NET. Pas DotNet. –

Répondre

4

Ajout d'un test pour les ensembles de ressources à un AssemblyResolver résout le problème et me permet d'exécuter cette bibliothèque de classes sous les deux .NET 2.0 et 4.0:

private Assembly ResolveGrasshopper(object sender, ResolveEventArgs e) 
{ 
    if (e.Name.Contains(".resources,")) { return null; } 
    .... 
} 
+0

Merci pour le suivi. – Greg

Questions connexes