Réponses:
Je trouve des informations manquantes dans les autres réponses (du moins pour les personnes qui viennent d'autres IDE comme, par exemple, Eclipse). Dire qu'une solution est un conteneur pour des projets n'est qu'une partie de la chose. La caractéristique conceptuelle d'un projet VS (ce qui détermine sa «granularité») est qu'un projet produit une sortie : généralement un exécutable ou une bibliothèque (dll). Donc, si vous allez coder trois exécutables qui utilisent du code associé, vous créerez une solution et au moins trois projets - probablement plus.
Juste pour trouver une métaphore ...
Une solution est comme une maison, un projet comme une pièce. Chaque pièce apporte une fonctionnalité tandis que la maison, contenant de pièces, permet de relier les pièces entre elles et de les organiser de manière appropriée.
Un peu ringard mais je l'ai inventé à la volée, alors supportez-moi :)
Cela n'aide pas que Visual Studio semble rendre les choses plus confuses. "New Project" crée en fait une nouvelle SOLUTION contenant un projet. «Open Project» ouvre en fait une solution contenant un (ou plusieurs) projet. (Le menu fichier dit "Ouvrir projet / solution" mais il ouvre vraiment des solutions. Il n'y a pas de "Fermer le projet" seulement "Fermer la solution" qui est précis.
Ainsi, dans VS, vous travaillez toujours dans une solution. De nombreuses solutions ne contiennent qu'un seul projet et les nouveaux développeurs sont susceptibles de les considérer comme la même chose. Cependant, vous pouvez ajouter d'autres projets dans une solution.
Au cas où quelqu'un déciderait de faire défiler vers le bas aussi loin ... Je pensais que les documents MS faisaient un assez bon travail pour décrire les différences. J'ai copié (et reformulé) les bits pertinents ici:
Lorsque vous créez une application, une application, un site Web, une application Web, un script, un plug-in, etc. dans Visual Studio, vous démarrez avec un projet. Dans un sens logique, un projet contient tous les fichiers de code source, icônes, images, fichiers de données et tout ce qui sera compilé dans un programme exécutable ou un site Web, ou bien est nécessaire pour effectuer la compilation. Un projet contient également tous les paramètres du compilateur et d'autres fichiers de configuration qui peuvent être nécessaires à divers services ou composants avec lesquels votre programme communiquera.
Vous n'êtes pas obligé d'utiliser des solutions ou des projets si vous ne le souhaitez pas. Vous pouvez simplement ouvrir les fichiers dans Visual Studio et commencer à modifier votre code.
Dans un sens littéral, un projet est un fichier XML (
.vbproj
,.csproj
,.vcxproj
) qui définit une hiérarchie de dossiers virtuels ainsi que des chemins d' accès à tous les éléments qu'il « contient » et tous les paramètres de construction.Dans Visual Studio, le fichier projet est utilisé par l'Explorateur de solutions pour afficher le contenu et les paramètres du projet. Lorsque vous compilez votre projet, le moteur MSBuild consomme le fichier projet pour créer l'exécutable. Vous pouvez également personnaliser les projets pour produire d'autres types de sortie.
Un projet est contenu, dans un sens logique et dans le système de fichiers, dans une solution, qui peut contenir un ou plusieurs projets, ainsi que des informations de construction, des paramètres de fenêtre Visual Studio et tous les fichiers divers qui ne sont associés à aucun projet. Au sens littéral, la solution est un fichier texte avec son propre format unique; il n'est généralement pas destiné à être édité à la main.
Une solution a un .suo
fichier associé qui stocke les paramètres, les préférences et les informations de configuration pour chaque utilisateur ayant travaillé sur le projet.
Une solution peut avoir de nombreux projets.
La solution peut également gérer la gestion des dépendances entre ses différents projets ... en s'assurant que chaque projet est construit dans l'ordre approprié pour que la solution finale fonctionne.
Un projet contient des fichiers exécutables et de bibliothèque qui constituent une application ou un composant d'une application.
Une solution est un espace réservé pour les projets liés logiquement qui constituent une application. Par exemple, vous pouvez avoir des projets distincts pour l'interface graphique de votre application, la couche d'accès à la base de données, etc. Les projets seraient des divisions spécifiques pour les fonctionnalités de votre programme, et la solution serait de les regrouper tous sous une seule application.
Une solution est un fichier texte lisible dont l'extension est .sln
et ayant un contenu structuré qui décrit les projets qu'il contient. Un projet est un fichier texte au format XML lisible dont l'extension est .vcxproj
et ayant un contenu structuré selon son schéma XML, et dont le but principal est de contenir la liste des noms de fichiers de codes sources et de leurs dépendances ou références aux codes sources d'autres projets.
Les solutions sont des conteneurs utilisés par Visual Studio pour organiser un ou plusieurs projets associés. Lorsque vous ouvrez une solution dans Visual Studio, elle charge automatiquement tous les projets qu'elle contient.
Lorsque vous créez un nouveau projet dans Visual Studio, il crée automatiquement une solution pour héberger le projet si aucune solution n'est déjà ouverte.
Vous pouvez définir les dépendances des projets sur d'autres projets dans la solution. Le projet dépendant est généré après la création du projet dont il dépend.
Pour plus de détails, consultez - https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions
Si vous venez d'un arrière-plan Eclipse, vous irez probablement au chemin de construction d'un projet et ajouter une dépendance à un autre projet ou ajouter un fichier jar externe. Dans VS, vous pouvez le faire dans un seul conteneur appelé solution où tous les projets associés sont regroupés.
Par exemple. Supposons que vous construisiez une application Android et iOS dans xamrin, il y aurait du code et des ressources communs qui pourraient aller dans un projet séparé, puis vos projets Android et iOS peuvent dépendre de ce projet de code commun. Vous pourriez également avoir des projets pour tester ces projets, etc.