-1
votes

vb.net appeler une méthode C # donne des erreurs

J'essaie d'accéder à la méthode C # à partir d'un projet VB.NET.

Le projet C # a le code suivant: xxx


le vb.net Le projet a ceci: xxx

Lors de l'exécution du code, je reçois l'erreur suivante

System.IO.FilenotFoundException: "Impossible de charger des fichiers ou de l'assemblage" mefwcfclient, version = 1.0.0.0, culture = neutre, PublickeyToken = null 'ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié

une dll MEF est référencé!

Dès que je commente les trois lignes ci-dessus, cela fonctionne comme un charme.


12 commentaires

Veuillez lire Comment demander et partager les erreurs réelles.


Où sont les erreurs?


Quel est le problème? Une erreur de syntaxe? Une exception d'exécution? Une fois que le code est compilé, il n'y a pas de méthode VB.NET ou C #, ce sont des méthodes seulement.


Si vous obtenez une exception, postez le texte complet de l'exception retourné par exception.tostring () . Ceci contient la pile d'appels complète indiquant où l'erreur s'est produite et que les appels y voyaient. Il contient également des exceptions internes qui auraient pu provoquer les erreurs.


Dans votre projet VB.NET, vous avez référencé le C # * .dll. Vous devez copier manuellement ce fichier sur votre vb.net binaire ou définir la référence à "Toujours copier" ou quelque chose comme ça.


Comme j'ai dit. L'erreur vient toujours que les trois lignes ci-dessus ne sont pas commentées.


Votre structure de classe a l'air faux. Cela ressemble à une application de console. Voici comment concevoir des cours en C # docs.microsoft.com/en-us/dotnet/cshaarp/programming-Guide/...


Si votre projet C # fait référence à d'autres bibliothèques, il doit être présent lorsque vous exécutez votre application VB faisant référence à la bibliothèque C #. Il serait magique que la bibliothèque C # fonctionne sans ses bibliothèques référencées, n'est-ce pas?


@Anprcorp: Je suis un peu irrité sur votre code, car le code C # suggère que CreateServicecontext () est statique ( partagé dans vb) , mais l'exemple VB crée une instance ( Dim Process comme neuve aimefilecore.loginclass )? Au fait, je ne l'appellerais pas processus pour éviter un conflit avec la classe du même nom dans NAMESPace System.Diagnostic ...


@Anprcorp L'accès de membres partagés via une instance est autorisé dans VB.NET mais doit être souligné en vert comme avertissement.


@Anprcorp est votre projet C # Project une console? (Il ressemble à cela parce que vous avez statique vide (string [] args) ) Vous peut référence une application de console, mais il est préférable de mettre ce code dans une classe bibliothèque. Vous pouvez créer une bibliothèque de classe à la place en sélectionnant cette option lors de la création d'un nouveau projet. Ensuite, vous ajouterez une référence à votre bibliothèque de classe.


@Anprcorp Lors de l'ajout d'une référence, assurez-vous d'être dans Références et sélectionnez Projects \ Solution puis sélectionnez votre projet. Cela entraînera la reconstruction automatiquement du projet référencé, et sera copiée dans le dossier binaire de votre application. N'ajoutez pas de référence à une DLL (ou exe dans le cas de l'application de la console) directement pour laquelle vous avez un code source, à moins que vous sachiez les effets secondaires.


3 Réponses :


0
votes

Je pense que vous devez aller aux propriétés du projet, références et vérifier si vous y avez une référence correcte pour le méfwcfclient référencé (une DLL). Vous pouvez l'ajouter dans cette boîte de dialogue, vous pourrez peut-être utiliser Nuget ou simplement le copier sur le dossier binaire.


2 commentaires

Oui, est référencé


Mais il y a probablement un problème avec ça. Voyez-vous la DLL dans le dossier binaire, lorsque vous le compilez? Avez-vous une DLL correcte pour votre assemblée (X86, X64, ...)?



0
votes

On dirait que la méthode que vous appelez est statique. Avez-vous essayé ceci dans vb.net?

public static void CreateServiceContext()
{
 ...
}


0 commentaires

0
votes
Imports MeF.Client

0 commentaires