Będąc nowym w VS, jak mogę myśleć o tych dwóch koncepcjach, jaka jest różnica?
103
Będąc nowym w VS, jak mogę myśleć o tych dwóch koncepcjach, jaka jest różnica?
Rozwiązanie jest kontenerem dla projektów i śledzi zależności między projektami.
W innych odpowiedziach znajduję pewne brakujące informacje (przynajmniej dla osób pochodzących z innych IDE, jak na przykład Eclipse). Stwierdzenie, że rozwiązanie jest pojemnikiem na projekty, to tylko część sprawy. Koncepcyjną cechą projektu VS (co decyduje o jego „ziarnistości”) jest to, że jeden projekt generuje jedno wyjście : zazwyczaj plik wykonywalny lub bibliotekę (dll). Tak więc, jeśli zamierzasz zakodować trzy pliki wykonywalne, które używają powiązanego kodu, utworzysz jedno rozwiązanie i co najmniej trzy projekty - prawdopodobnie więcej.
Żeby wymyślić metaforę ...
Rozwiązanie jest jak dom, projekt jak pokój. Każde pomieszczenie zapewnia funkcjonalność, a dom, kontener pomieszczeń, zapewnia możliwość połączenia ze sobą pomieszczeń i odpowiedniego ich uporządkowania.
Trochę banalne, ale nadrobiłem to w locie, więc wytrzymaj ze mną :)
źródło
Nie pomaga to, że Visual Studio wydaje się bardziej zagmatwać. „Nowy projekt” w rzeczywistości tworzy nowe ROZWIĄZANIE zawierające projekt. „Open Project” w rzeczywistości otwiera rozwiązanie zawierające jeden (lub wiele) projektów. (W menu pliku jest napisane „Otwórz projekt / rozwiązanie”, ale tak naprawdę jest to otwieranie rozwiązań. Nie ma opcji „Zamknij projekt” tylko „Zamknij rozwiązanie”, które jest dokładne.
Tak więc w VS zawsze pracujesz nad rozwiązaniem. Wiele rozwiązań zawiera tylko jeden projekt, a nowi programiści prawdopodobnie będą myśleć o nich jako o tym samym. Możesz jednak dodać inne projekty do rozwiązania.
źródło
Na wypadek, gdyby ktoś zdecydował się przewinąć tak daleko ... Myślałem, że doktorzy stwardnienia rozsianego wykonali całkiem dobrą robotę opisując różnice. Skopiowałem (i przeformułowałem) odpowiednie bity tutaj:
Rozwiązanie ma powiązany
.suo
plik, który przechowuje ustawienia, preferencje i informacje konfiguracyjne dla każdego użytkownika, który pracował nad projektem.źródło
Rozwiązanie może mieć wiele projektów.
Rozwiązanie może również zarządzać zależnościami między różnymi projektami ... upewniając się, że każdy projekt zostanie zbudowany w odpowiedniej kolejności, aby końcowe rozwiązanie działało.
źródło
Projekt zawiera pliki wykonywalne i biblioteki, które tworzą aplikację lub składnik aplikacji.
Rozwiązanie to element zastępczy dla projektów powiązanych logicznie, które składają się na aplikację. Na przykład możesz mieć oddzielne projekty dla interfejsu GUI aplikacji, warstwy dostępu do bazy danych i tak dalej. Projekty byłyby określonymi podziałami dla funkcjonalności twojego programu, a rozwiązaniem byłby parasol łączący je wszystkie w jednej aplikacji.
źródło
Rozwiązania to kontenery dla projektów - można ich również używać do organizowania elementów, które są używane w różnych powiązanych projektach (współdzielone biblioteki DLL itp.).
źródło
Rozwiązanie jest czytelny plik tekstowy, którego rozszerzenie
.sln
, o strukturze treść opisującą projekty , że zawiera. Projektu jest czytelny XML sformatowany plik tekstowy, którego rozszerzenie.vcxproj
, o strukturze zawartość zgodnie z jego schematu XML, a którego głównym celem jest zawierać listę kodów źródłowych nazw plików i ich zależności i odniesień do kodów źródłowych inny projekt, jak również.źródło
Aby uzyskać więcej informacji, zobacz - https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions
Jeśli jesteś z tła Eclipse, prawdopodobnie udałbyś się do ścieżki budowania projektu i dodania zależności od innego projektu lub dodania zewnętrznego jar. W VS możesz to zrobić w jednym kontenerze zwanym rozwiązaniem, w którym wszystkie powiązane projekty są zgrupowane razem.
Na przykład. Załóżmy, że jesteś kompilacją i aplikacją na Androida i iOS w Xamrin, byłby pewien wspólny kod i zasoby, które mogłyby trafić do osobnego projektu, a projekty dla Androida i iOS mogą zależeć od tego wspólnego projektu kodu. Możesz także mieć projekty do testowania tych projektów itp.
źródło