Visual Studio-Projekt vs. Lösung

Antworten:

70

Eine Lösung ist ein Container für Projekte und verfolgt Abhängigkeiten zwischen Projekten.

pzr
quelle
128

Ich finde einige fehlende Informationen in den anderen Antworten (zumindest für Leute, die von anderen IDEs wie beispielsweise Eclipse stammen). Zu sagen, dass eine Lösung ein Container für Projekte ist, ist nur ein Teil der Sache. Das konzeptionelle Merkmal eines VS-Projekts (was seine 'Granularität' bestimmt) ist, dass ein Projekt eine Ausgabe erzeugt : normalerweise eine ausführbare Datei oder eine Bibliothek (DLL). Wenn Sie also drei ausführbare Dateien codieren, die verwandten Code verwenden, erstellen Sie eine Lösung und mindestens drei Projekte - wahrscheinlich mehr.

leonbloy
quelle
2
Vergessen Sie nicht Shared Code-Projekte, die aufgenommen werden können, ohne eine eigene Baugruppe zu erstellen.
AyCe
43

Nur um eine Metapher zu finden ..

Eine Lösung ist wie ein Haus, ein Projekt wie ein Raum. Jeder Raum bietet ein Stück Funktionalität, während das Haus, ein Container mit Räumen, die Möglichkeit bietet, die Räume miteinander zu verbinden und sie angemessen zu organisieren.

Ein bisschen kitschig, aber ich habe es spontan erfunden, also nimm es mit :)

Cody C.
quelle
26

Es hilft nicht, dass Visual Studio die Dinge verwirrender zu machen scheint. "Neues Projekt" erstellt tatsächlich eine neue LÖSUNG, die ein Projekt enthält. "Projekt öffnen" öffnet tatsächlich eine Lösung, die ein (oder mehrere) Projekte enthält. (Das Dateimenü sagt "Projekt / Lösung öffnen", aber es öffnet wirklich Lösungen. Es gibt kein "Projekt schließen", nur "Lösung schließen", was genau ist.

In VS arbeiten Sie also immer innerhalb einer Lösung. Viele Lösungen enthalten nur ein Projekt, und neuere Entwickler betrachten sie wahrscheinlich als dasselbe. Sie können jedoch andere Projekte zu einer Lösung hinzufügen.

Chryses
quelle
Was bringt es, mehrere Projekte in einer Lösung zu haben? Ich verstehe das nicht ..
Liga
12

Für den Fall, dass sich jemand entscheidet, so weit nach unten zu scrollen ... Ich dachte, die MS-Dokumente haben die Unterschiede ziemlich gut beschrieben. Ich habe die relevanten Bits hier kopiert, eingefügt (und umformuliert):

Wenn Sie in Visual Studio eine App, eine Anwendung, eine Website, eine Webanwendung, ein Skript, ein Plug-In usw. erstellen, beginnen Sie mit einem Projekt. In einem logischen Sinne enthält ein Projekt alle Quellcodedateien, Symbole, Bilder, Datendateien und alles andere, was zu einem ausführbaren Programm oder einer ausführbaren Website kompiliert wird oder für die Kompilierung benötigt wird. Ein Projekt enthält auch alle Compilereinstellungen und andere Konfigurationsdateien, die möglicherweise von verschiedenen Diensten oder Komponenten benötigt werden, mit denen Ihr Programm kommunizieren wird.

Sie müssen keine Lösungen oder Projekte verwenden, wenn Sie nicht möchten. Sie können die Dateien einfach in Visual Studio öffnen und mit der Bearbeitung Ihres Codes beginnen.

Im wahrsten Sinne des Wortes, ist ein Projekt , eine XML - Datei ( .vbproj, .csproj, .vcxproj) , die es Einstellungen „enthält“ und alle die Build zusammen mit Pfaden auf alle Elemente einer virtuellen Ordner - Hierarchie definiert.

In Visual Studio wird die Projektdatei vom Projektmappen-Explorer verwendet, um den Projektinhalt und die Einstellungen anzuzeigen. Wenn Sie Ihr Projekt kompilieren, verwendet die MSBuild-Engine die Projektdatei, um die ausführbare Datei zu erstellen. Sie können Projekte auch anpassen, um andere Arten von Ausgaben zu erstellen.

Ein Projekt ist im logischen Sinne und im Dateisystem in einer Lösung enthalten, die ein oder mehrere Projekte sowie Build-Informationen, Visual Studio-Fenstereinstellungen und verschiedene Dateien enthalten kann, die keinem Projekt zugeordnet sind. Im wahrsten Sinne des Wortes ist die Lösung eine Textdatei mit einem eigenen eindeutigen Format. Es ist im Allgemeinen nicht dazu gedacht, von Hand bearbeitet zu werden.

Einer Lösung ist eine .suoDatei zugeordnet, in der Einstellungen, Einstellungen und Konfigurationsinformationen für jeden Benutzer gespeichert sind, der an dem Projekt gearbeitet hat.

jrahhali
quelle
7

Eine Lösung kann viele Projekte haben.

Die Lösung kann auch die Abhängigkeiten zwischen den verschiedenen Projekten verwalten. Stellen Sie dabei sicher, dass jedes Projekt in der richtigen Reihenfolge erstellt wird, damit die endgültige Lösung funktioniert.

Justin Niessner
quelle
3

Ein Projekt enthält ausführbare Dateien und Bibliotheksdateien, aus denen eine Anwendung oder Komponente einer Anwendung besteht.

Eine Lösung ist ein Platzhalter für logisch verwandte Projekte, aus denen eine Anwendung besteht. Beispielsweise könnten Sie separate Projekte für die GUI Ihrer Anwendung, die Datenbankzugriffsschicht usw. haben. Die Projekte wären spezifische Abteilungen für die Funktionalität Ihres Programms, und die Lösung wäre der Schirm, der alle unter einer Anwendung vereint.

David
quelle
2

Lösungen sind Container für Projekte. Sie können sie auch zum Organisieren von Elementen verwenden, die für verschiedene verwandte Projekte verwendet werden (gemeinsam genutzte DLLs usw.).

Oded
quelle
2

Eine Lösung ist eine lesbare Textdatei mit der Erweiterung .slnund einem strukturierten Inhalt, der die darin enthaltenen Projekte beschreibt . Ein Projekt ist eine lesbare XML- formatierte Textdatei, deren Erweiterung .vcxprojein strukturierter Inhalt gemäß dem XML-Schema ist und deren Hauptzweck darin besteht, die Auflistung der Dateinamen des Quellcodes und ihrer Abhängigkeiten oder Verweise auf die Quellcodes anderer Projekte zu enthalten.

trueadjustr
quelle
0

Lösungen sind Container, die von Visual Studio zum Organisieren eines oder mehrerer verwandter Projekte verwendet werden. Wenn Sie eine Lösung in Visual Studio öffnen, werden automatisch alle darin enthaltenen Projekte geladen.

Wenn Sie ein neues Projekt in Visual Studio erstellen, wird automatisch eine Lösung für das Projekt erstellt, wenn noch keine Lösung geöffnet ist.

Sie können Abhängigkeiten von Projekten von anderen Projekten in der Lösung festlegen. Das abhängige Projekt wird erstellt, nachdem das Projekt erstellt wurde, von dem es abhängig ist.

Weitere Informationen finden Sie unter https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions

Wenn Sie aus einem Eclipse-Hintergrund stammen, würden Sie wahrscheinlich den Pfad eines Projekts erstellen und eine Abhängigkeit von einem anderen Projekt hinzufügen oder ein externes JAR hinzufügen. In VS können Sie dies in einem einzigen Container namens "Lösung" tun, in dem alle zugehörigen Projekte zusammengefasst sind.

Z.B. Angenommen, Sie sind eine Build- und Android- und iOS-App in Xamrin. Es gibt einige allgemeine Codes und Ressourcen, die in einem separaten Projekt enthalten sein können, und dann können Ihre Android- und iOS-Projekte von diesem gemeinsamen Code-Projekt abhängen. Sie könnten auch Projekte haben, um diese Projekte usw. zu testen.

Aniket Thakur
quelle