J'essaie d'accéder à la méthode C # à partir d'un projet VB.NET.
Le projet C # a le code suivant: p> le vb.net Le projet a ceci: p> Lors de l'exécution du code, je reçois l'erreur suivante p> 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é p>
blockQuote> une dll MEF est référencé! p> Dès que je commente les trois lignes ci-dessus, cela fonctionne comme un charme. P> P>
3 Réponses :
Je pense que vous devez aller aux propriétés du projet, références code> 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. P>
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, ...)?
On dirait que la méthode que vous appelez est statique. Avez-vous essayé ceci dans vb.net?
public static void CreateServiceContext() { ... }
Imports MeF.Client
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 i> retourné par
exception.tostring () code>. 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 () code> est
statique code> (
partagé code> dans vb) , mais l'exemple VB crée une instance (
Dim Process comme neuve aimefilecore.loginclass code>)? Au fait, je ne l'appellerais pas
processus code> pour éviter un conflit avec la classe du même nom dans NAMESPace
System.Diagnostic CODE> ...
@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) code>) Vous peut i> 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 B> et sélectionnez Projects \ Solution B> 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.