Je reçois l'erreur suivante sur l'un de mes assemblys référencés:
Could not load type 'System.Func`2' from Assembly 'MyAssembly, ...
Je serai honnête, je ne pense pas pouvoir me rappeler la dernière fois que j'ai vu une erreur System.TypeLoadException, ou si je l'ai vue, la solution était évidente. Mon premier instinct a été de voir ce que MSDN avait à dire à ce sujet :
TypeLoadException est levée lorsque le Le Common Language Runtime ne trouve pas l’Assemblée, le type dans le Assembly ou ne peut pas charger le type.
Peut-être ai-je mal lu, mais cela signifie-t-il que le CLR ne peut tout simplement pas trouver le type? Cela aurait plus de sens si ce n’était pas quelque chose qui se trouvait dans mscorlib. Tout cela a été construit sur .NET4 avec VS2010, il n'y a donc pas de problème de mono ou autre problème de bibliothèque bizarre. Est-ce que je réfléchis trop? Que se passe-t-il?
Le problème est que vous avez une incompatibilité dans vos versions. Assurez-vous que tous vos assemblys sont compilés pour .NET 4.
J'ai reçu cette erreur après refactoring. J'ai eu deux projets compiler en DLL avec le même nom.
Vérifiez le "Nom de l'assembly" dans la section "Application" des propriétés du projet.
Je ne suis pas sûr de votre scénario spécifique, mais le visualiseur de journal de liaison d'assemblage (fuslogvw) est généralement très utile pour le débogage de problèmes de chargement de types. Plus de détails à http://msdn.Microsoft.com/en-us/library/e74a18c4.aspx
Vous pouvez également l'obtenir si vous modifiez l'assembly que vous essayez de charger tout en conservant une ancienne version dans le GAC. Il essaie de charger la version de GAC, pas ce que vous référencez dans votre projet VS.
J'ai eu cette erreur quand j'ai déplacé une classe d'un projet à un autre dans un effort de nettoyage. Après avoir examiné toutes les autres raisons possibles, chacun des projets de ma solution a été rechargé et tout a fonctionné.
J'ai rencontré cette exception lorsque j'ai refactoré de déplacer certaines classes dans leur propre bibliothèque et que j'ai référencé une version différente de la bibliothèque qu'il tente de charger dans la nouvelle bibliothèque (acquise avec NuGet) que celle que j'avais utilisée dans le projet d'origine.
Le problème qui a été résolu est d'ouvrir le gestionnaire NuGet dans l'ancien projet et de mettre à jour le paquet approprié pour qu'il corresponde à la version que j'utilisais dans ma nouvelle bibliothèque.
Ce problème peut se produire si différentes versions des packages NuGet sont installées sur différents projets. Pour identifier ces cas,