C # "Méthode non trouvée" exception à l'exécution sans utilisation de réflexion
J'ai un problème avec l'obtention exception ci-dessus. J'ai un relativement simple de la structure séparée en deux dll.
Première contient une IEntityService, IEntity, avec la mise en œuvre de base. Second contient les implémentations réelles ainsi que des interfaces. il y a donc un IMachine service qui implémente IEntityService et MachineService qui implémente à la fois IEntityService et EntityService. Situation similaire pour une collection de Résultat( entité de service compris). En outre, le service de la Machine et le résultat) sont des classes partielles/interfaces où l'un de la classe est généré automatiquement.
Maintenant dans l'un des ResultMachine je suis en train d'essayer d'obtenir une machine et dans un cas, il n'existe pas, je suis en pleine création et d'économie. Cependant lorsque j'essaie d'enregistrer j'ai eu la "Méthode introuvable" lorsque vous essayez d'accéder à une méthode de sauvegarde à partir d'un EntityService classe. Cependant, si j'envelopper EntityService.Méthode dans un MachineService il travaille sans exception.
Édité:
Le code n'est pas nécessaire. La résolution a été de rétablir le lien entre la référence. Ce qui est trompeur pour moi que ma dll n'est pas dans le GAC, il est lié avec VS. Ce qui est plus, il n'est pas fortement signé, la seule différence est le numéro de version.
source d'informationauteur Szymon Sasin
Vous devez vous connecter pour publier un commentaire.
Mon premier réflexe serait de vérifier les assemblages de contenu les classes avec la méthode manquante. Je suppose que c'est possible que l'assemblée n'a pas mis à jour immédiatement?
Nous avons eu cette erreur plusieurs fois, vous pouvez reproduire le problème comme suit:
Vous aurez maintenant la méthode d'exception manquant. La raison en est que c'est à l'aide de l'ancienne version de la dll dans le GAC et n'ont pas la méthode.
À certains moments, il utilise une version mise en cache de l'ancienne dll, IISreset peut vous aider.
Dans votre cas, vérifiez pour les anciennes versions de dll.
Lors de la référence à la "même" type de montages différents, assurez-vous que vous chargez le tout par le même chemin. Sinon, identiques types peuvent effectivement être traités comme s'ils sont différents.
Voir cet article pour plus d': Fusion Chargeur de Contextes - Impossible de convertir l'objet de type 'Tout' de type 'Tout'
Ce qui m'est arrivé lorsque je suis allé dans et modifié mes paramètres de construction à la sortie vers /bin/Debug plutôt que de simplement /bin dans un cas lorsque j'étais aussi à l'aide de IIS pour héberger le site de la dev dossier.
Vous avez besoin d'avoir les binaires dans le même dossier que le service, dans mon cas, et le tweak gauche anciennes versions dans le dossier bin et de mettre les versions ultérieures dans le /bin/Debug dossier (et /bin/Release).
Soit conserver les paramètres, comme c'est et avoir un post-construction de l'action de copier les bits d'un niveau, ont différentes applications IIS pour debug/release, ou de le déployer sur un autre dossier tout à fait. Ce dernier est probablement le plus "correct" mais pour ma part je viens de réaliser après beaucoup de faire tourner les roues, que j'ai eu différentes versions dans le service du dossier. HTH.
Dans mon cas, je viens de déployer sur une machine avec .NET 3.0 (Windows XP), alors que la cible de compilation a été .NET 3.5.
Ce message d'erreur n'est vraiment pas utile.
Problème a été l'utilisation de DataContract à partir du Système.Moment de l'exécution.La sérialisation.