Après avoir passé plus de deux heures avec deux collègues sur ce bug, je me devais d’en parler ici.
Donc pour la petite histoire, lors du lancement d’une application, nous recevions ce message de la part du framework qui indiquait clairement qu’une méthode n’avait pas d’implémentation. Cette méthode est portée par une assembly C# tout à fait standard.
Hop, un coup de Reflector nous permet de valider que la méthode existe bien et que du code y est bien présent.
Je vous la fait courte : Cette méthode référençait une assembly C++/CLI qui était compilée en x86 alors que le code appelant était en C# compilé en “Any CPU”. Or, ce code s’exécutait sur une machine 64 bits, donc le code C# était exécuté dans un process 64 bits. Toutefois le class loader au moment de jitter la méthode incriminée se retrouvait en train de charger une assembly qui n’etait donc pas dans le bon format (x64 vs x86) et de ce fait n’arrivait pas à fournir une implémentation.
Donc voila, pour tous ceux qui tomberont sur cette erreur…
.Net