Le truc à la con du jour : “Method Implementation is empty”

22. avril 2010

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…

Bookmark and Share

.Net

Commentaires

24/04/2010 14:40:43 #
Bon et du coup t'as fait quoi ? t'as compilé ton assembly C# en x86 ou ta dll C++ en x64 Smile
25/04/2010 23:38:39 #
J'ai compilé tout le monde en x86

Ajouter un commentaire




  Country flag

biuquote
  • Commentaire
  • Aperçu immédiat
Loading