Dans la même solution, j'ai deux projets: P1 et P2. Comment puis-je utiliser une classe de P1 dans P2?
c#
visual-studio
Strider007
la source
la source
Réponses:
Ajoutez simplement la référence à P1 depuis P2
la source
Notez que les types de P1 auxquels vous souhaitez accéder directement doivent avoir un niveau d'accès suffisant: cela signifie généralement qu'ils doivent être rendus publics.
la source
Paul Ruane a raison, je viens de m'essayer à la construction du projet. Je viens de faire un SLN entier pour tester si cela fonctionnait.
J'ai fait ça dans VC # VS2008
<< (Juste aider les autres personnes qui lisent ceci aussi avec () commentaires)
Étape 1:
Créer une solution appelée DoubleProject
Étape 2:
Créer un projet dans une solution nommée DoubleProjectTwo (pour ce faire, sélectionnez le fichier de solution, clic droit -> Ajouter -> Nouveau projet)
J'ai maintenant deux projets dans la même solution
Étape 3:
Comme l'a déclaré Paul Ruane. aller aux références dans l'explorateur de solutions (s'il est fermé, il est dans l'onglet vue du compilateur). DoubleProjectTwo est celui qui a besoin des fonctions / méthodes de DoubleProject, donc dans DoubleProjectTwo, faites référence à la souris avec le bouton droit de la souris -> Ajouter -> Projets -> DoubleProject.
Étape 4:
Étape 5:
Cela devrait faire l'affaire
J'espère que cela t'aides
EDIT ::: whoops oublié l'appel de méthode pour changer réellement la chaîne, ne faites pas la même chose :)
la source
Trop souvent, un nouveau développeur pose cette question simple qui est un problème courant spécifiquement avec les IDE de Visual Studio. Peu de gens répondent à la question spécifique et critiquent souvent la question ou donnent des «suppositions» pour des solutions qui ne répondent pas aux problèmes courants. Le premier problème courant est que l'EDI vous amène à créer de nouveaux projets plutôt qu'à ajouter de nouveaux fichiers (.java, .py, .cpp, .c) à la solution existante (par défaut, il crée une nouvelle solution) sauf si vous changez le nom du projet et ajouter à la solution actuelle. Ce problème se produit pour les dossiers de projet Python, java, c #, C ++ et C.
Cela ne se produit pas lorsque vous ajoutez un autre projet à l'aide des commandes de type nouveau> projet> projet de l'EDI. Le problème ici est que le nouveau projet est stocké dans un répertoire différent de celui des fichiers de code d'interface client ou utilisateur existants. Pour créer un nouveau "fichier" dans le même espace de projet plutôt qu'un nouveau projet, le débutant doit effectuer les opérations suivantes que Microsoft ne fera pas pour vous et vous éloigne même de l'évidence intuitive par défaut.
MAINTENANT, les recommandations de code pour importer des bibliothèques ou utiliser des espaces de noms fonctionneront comme décrit dans les commentaires ci-dessus et vous n'avez pas à modifier les instructions de chemin ou les chemins de solutions et les noms de solutions que Microsoft ne vous permettra pas de modifier facilement (c'est-à-dire que vous pouvez modifier le les noms de fichiers ou les noms de projet mais l'EDI ne changera pas automatiquement le chemin du projet ou les noms du chemin de la solution).
Ce qui suit est un exemple Python mais fonctionne de manière similaire pour C #, java ou C / C ++ en utilisant les includes, les espaces de noms ou en utilisant les commandes de code appropriées à chaque langage pour trouver du code dans d'autres classes / projets dans le MÊME ESPACE DE RÉPERTOIRE.
Le fichier d'application "hello world" importé à partir d'autres fichiers de code dans le même répertoire.
Notez que les délimiteurs d'espaces blancs python ne s'espacent pas correctement dans cet éditeur de commentaires stackoverflow:
Le fichier bibliothèque ou fichier "façade" contenant les classes, méthodes ou fonctions que vous souhaitez importer.
MAINTENANT, comment résolvez-vous réellement le désordre dans lequel l'EDI vous entraîne? Pour importer du code à partir d'un autre fichier dans le même espace de répertoire, ajoutez une référence à celui-ci.
OK, alors maintenant que ce problème est résolu, comment liez-vous vraiment deux projets distincts dans le même espace de solution?
Microsoft a vraiment, vraiment besoin de résoudre ces problèmes afin que vous puissiez créer intuitivement ce que la plupart des gens veulent créer en tant que nouveaux fichiers dans les mêmes répertoires et supprimer des solutions en les sélectionnant et en les supprimant de l'EDI. Les débutants sont tellement frustrés par les instructions de chemin de répertoire si flexibles pour les développeurs chevronnés, mais si injustes pour les nouveaux développeurs par défaut.
J'espère que cela vous aide vraiment les nouveaux et empêche les développeurs chevronnés de vous donner les mauvaises réponses qui ne fonctionnent pas pour vous. Ils supposent que vous comprenez déjà les instructions de chemin et que vous voulez simplement taper le bon code ... c'est aussi pourquoi le tunnel essaie de corriger votre code mais ne vous aide pas à résoudre le problème. C'est probablement le problème le plus courant décrit en permanence sur stackoverflow avec de mauvaises réponses qui ne fonctionnent pas pour les nouveaux programmeurs.
la source
La première étape consiste à faire référence P2 P1 en procédant comme suit
Ensuite, vous devrez vous assurer que les classes de P1 sont accessibles à P2. Le moyen le plus simple est de les fabriquer
public
.Vous devriez maintenant pouvoir les utiliser en P2 via leur nom complet. En supposant que l'espace de noms de P1 est Project1, alors ce qui suit fonctionnerait
La méthode préférée est cependant d'ajouter une utilisation pour
Project1
afin que vous puissiez utiliser les types sans qualificationla source
Si vous avez deux projets dans un dossier de solution, ajoutez simplement la référence du projet dans un autre, en utilisant l'espace de noms, vous pouvez obtenir les classes. Lors de la création de l'objet pour cela, la classe requise. Appelez la méthode que vous voulez.
Premier projet:
Ajoutez ici une référence au deuxième projet
Deuxième projet:
la source
Dans le projet P1, rendez la classe publique (si ce n'est déjà fait). Ajoutez ensuite une référence de projet (plutôt qu'une référence de fichier, une erreur que j'ai rencontrée occasionnellement) à P2. Ajoutez une instruction using dans P2 au bon endroit et commencez à utiliser la classe de P1.
(Pour mentionner ceci: l'alternative à rendre la classe publique serait de faire de P2 un ami de P1. Cependant, il est peu probable que ce soit la réponse que vous recherchez car cela aurait des conséquences. Alors, restez fidèle à la suggestion ci-dessus.)
la source
Supposons que votre classe dans le projet 2 s'appelle MyClass.
Evidemment, commencez par référencer votre projet 2 sous les références du projet 1 puis
Ainsi, chaque fois que vous souhaitez référencer cette classe, vous tapez project2Class. De plus, assurez-vous que cette classe est également publique.
la source
J'ai eu un problème avec différents frameworks cibles.
Je faisais tout correctement, mais je ne pouvais tout simplement pas utiliser la référence en P2. Après avoir défini le même cadre cible pour P1 et P2, cela a fonctionné comme un charme.
J'espère que cela aidera quelqu'un
la source
The name ... does not exist in the current context. Cannot resolve symbol ...
jusqu'à ce que je change les cadres cibles des projets pour qu'ils correspondent. (Cliquez avec le bouton droit sur le projet et accédez àProject -> Properties -> Target framework
pour changer cela.)