Jak „dodać istniejący element” całą strukturę katalogów w programie Visual Studio?

765

Mam dowolny zestaw plików niezwiązanych z żadnym projektem C #, które znajdują się w skomplikowanej zagnieżdżonej strukturze katalogów.

Chcę dodać je w tym formacie do innego katalogu w aplikacji sieci Web ASP.NET, nad którą pracuję; zachowując tę ​​samą strukturę. Skopiowałem folder do docelowej lokalizacji mojego projektu i próbowałem „dodać istniejący element” tylko po to, aby utracić poprzednią hierarchię folderów.

Zazwyczaj ręcznie tworzyłem katalogi, kopiowałem je pojedynczo, a następnie dodawałem istniejące elementy. W tym przypadku jest po prostu zbyt wiele katalogów / pozycji.

Jak więc dodać istniejące katalogi i pliki w Visual Studio 2008?

Ian Patrick Hughes
źródło
44
Fakt, że nie jest to oczywiste dla większości ludzi (w tym dla mnie), jest smutnym testamentem na temat Visual Studio.
Pete Alvin
22
@Pete Alvin Mam wiele smutnych testamentów na temat Visual Studio, ale doceniam to teraz, gdy spędziłem czas z niektórymi innymi IDE.
Freek Nortier
4
Studio wizualne nie jest jednak idealne, wykorzystałem prawie każde dostępne IDE. Jeśli jest najlepszy. Zaćmienie nie jest nawet blisko, Xcode jest prawdopodobnie jedynym, który się zbliża.
user1127081,
2
@ user1127081: Muszę to poprzeć. Visual Studio jest daleki od ideału, ale używałem prawie każdego innego IDE do prawie każdego rozwoju i docelowego systemu operacyjnego, a wszystkie są o wiele gorsze. Muszę również zgodzić się, że Xcode jest zdecydowanie i zdecydowanie najlepszy z pozostałych, ale stało się tak dopiero po tym, jak zatwierdził wiele między Xcode 3 a Xcode 4. Eclipse to tylko koszmar.
Kaiserludi

Odpowiedzi:

737

Przeciągnij pliki / foldery z Eksploratora Windows do Eksploratora rozwiązań. Doda je wszystkie. Uwaga: to nie działa, jeśli Visual Studio jest w trybie administratora, ponieważ Eksplorator Windows jest procesem w trybie użytkownika.

Darren Kopp
źródło
42
To mi nie działa. Po prostu daje mi ikonę nieprawidłowego celu upuszczenia. Pokaż wszystkie pliki poniżej działa jednak doskonale
Cine
115
W VS 2010, po przeciągnięciu folderu przez Draggin, wybierz opcję Pokaż wszystkie pliki w projekcie. Pliki istnieją w formie „zjawy”, kliknij folder prawym przyciskiem myszy i dołącz do projektu. Zostaną następnie dodani
Jan Ptacek
10
@JohnPtacek: To działa w projekcie, ale nie w rozwiązaniu.
2
Ta odpowiedź nie jest ważna dla VS2010 (przynajmniej o ile mogę powiedzieć). Odpowiedź Toma z dnia 7.10.12 była dla mnie najlepszym rozwiązaniem w VS2010
BLSully,
8
Zabij explorer.exe za pomocą menedżera zadań, uruchom go jako administrator, a następnie przeciągnij i upuść w programie Visual Studio, nawet jeśli działa on jako administrator.
xander
545

Włącz „Pokaż wszystkie pliki” dla konkretnego projektu (może być konieczne naciśnięcie „Odśwież”, aby je zobaczyć) **.

Foldery / pliki, które nie są częścią twojego projektu, wydają się nieco „jaśniejsze” w drzewie projektu.

Kliknij prawym przyciskiem myszy foldery / pliki, które chcesz dodać, a następnie kliknij „Uwzględnij w projekcie” . Rekurencyjnie doda foldery / pliki do projektu.

** Te przyciski znajdują się na pasku narzędzi mini Solution Explorer.

** Upewnij się, że NIE jesteś w trybie debugowania.

Brannon
źródło
2
Wygląda na to, że działa to tylko w przypadku plików głębszych niż plik projektu, jeśli plik projektu jest przechowywany w folderze, nie zadziała.
Danny Parker
28
Działa to tylko w pojedynczych projektach, ale nie w ramach rozwiązania.
7
Hmm ... nie tam powinieneś umieszczać pliki. Oczywiście nie znajdzie plików nad folderem głównym.
Bluebaron
3
Działa to tylko wtedy, gdy chcesz, aby dodane foldery znajdowały się w folderze projektu. W moim przypadku chcę, aby były gdzie indziej (dzielone między projektami). W XCode przeciągnięcie struktury folderów z dowolnego miejsca do struktury projektu zachowuje strukturę folderów zamiast spłaszczania jej jak VS. Wygląda na to, że VS nie ma tutaj żadnej funkcji.
Mattijs
9
wskazówka - upewnij się, że projekt jest wybrany, a nie rozwiązanie - wtedy możesz zrobić wszystko!
niico
89

W Solution Explorer:

  1. Kliknij opcję Pokaż wszystkie pliki (druga ikona z lewej strony u góry Eksploratora rozwiązań).
  2. Znajdź folder, który chcesz dodać.
  3. Kliknij prawym przyciskiem myszy i wybierz „Uwzględnij w projekcie”

Używam tego do instalowania dodatków, takich jak edytory HTML i przeglądarki plików innych firm.

Tomek
źródło
16
Czym różni się to od odpowiedzi Brannona sprzed 4 lat?
ToolmakerSteve
7
Nie rozwiązuje to pierwotnego problemu dotyczącego folderu Solution . Zostało to również wcześniej pokryte.
user2864740,
@ToolmakerSteve: Różni się tym, że jest taki sam jak rozwiązanie Ganta z ... 7 lat wcześniej. stackoverflow.com/questions/392473/...
Veverke,
Gorąco polecam to rozwiązanie, ponieważ pomaga również, gdy zalogowane są konfliktowe pliki csproj, a tfs ignoruje konflikty i zastępuje
John Demetriou
6
+1. Uważam, że ta odpowiedź jest bardziej pomocna niż inne, ponieważ wyjaśnia (względnie), że Pokaż wszystkie pliki to ikona , a nie pozycja w menu kontekstowym.
35

Chciałbym tylko zaznaczyć, że dwa z wcześniej oferowanych rozwiązań,

  • Przeciągnij i upuść z Eksploratora Windows
  • Pokaż wszystkie pliki, a następnie dołącz do projektu.

nie rób tego, o co pytało:

Uwzględnij w projekcie , zachowując strukturę katalogów .

Przynajmniej nie w moim przypadku (projekt C ++ / CLI Visual Studio 2013 na Windows 7).

W programie Visual Studio, po powrocie do normalnego widoku (nie Pokaż wszystkie pliki ), wszystkie dodane pliki są wyświetlane na najwyższym poziomie projektu.

Tak, na dysku nadal znajdują się tam, gdzie były, ale w Eksploratorze rozwiązań są luźne.

Nie znalazłem sposobu na obejście tego, poza odtworzeniem struktury katalogów w Eksploratorze rozwiązań, a następnie wykonaniem dodawania istniejących elementów we właściwej lokalizacji.

ILIA BROUDNO
źródło
Widzę to samo zachowanie, VS2010, c ++.
Radim Cernej,
To prawda, także w Visual Studio 2010. Nie dodaje nawet plików bez struktury katalogów, tylko pierwszy plik w tej strukturze folderów, a nie żadnych podfolderów.
Jonas
2
Uzgodnione, wciąż się różni. Zastanawiam się, jak popularne i drogie oprogramowanie, takie jak VS, może nie mieć takiej funkcji. Uważam za dość mylące mieć dwie różne, ale podobne struktury w eksploratorze rozwiązań i eksploratorze Windows ...
Janis
12
Korzystam z 2015 tutaj; nadal nie zachowuje struktury folderów. Oszołomiony.
Toby Deshane
Korzystając z aktualizacji 3 z 2015 roku, właśnie odniosłem sukces dzięki podejściu Bannon i Toma. Wszystkie zagnieżdżone foldery weszły zgodnie z oczekiwaniami.
John Hatton
22

Nie od razu zrozumiałem to na podstawie tych opisów, ale oto, na co w końcu natknąłem się:

  1. Włącz „Pokaż wszystkie pliki” - na pasku narzędzi Solution Explorer znajduje się ikona
  2. Za pomocą Eksploratora Windows (nie eksploratora rozwiązań) przenieś swoje pliki do struktury katalogów, w której mają się znajdować
  3. Kliknij „Odśwież” również na pasku narzędzi Eksploratora rozwiązań
  4. Przeniesione pliki powinny być widoczne „zjawy” w strukturze drzewa Eksploratora rozwiązań w miejscu, w którym zostały umieszczone
  5. Kliknij prawym przyciskiem myszy swoje pliki lub foldery-widma i kliknij „Uwzględnij w projekcie”. Uwzględniona zostanie cała zawartość folderu
Don Rule
źródło
2
To jest folder rozwiązania, a nie projekt.
StingyJack
Aktualizacja: W VS2019 nie ma przycisku „odświeżania”
Liu Hao,
16

Poniżej znajduje się ikona „ Pokaż wszystkie pliki ”, dla łatwego odniesienia.

Wpisz opis zdjęcia tutaj

Marvin Glenn Lacuna
źródło
13

Wpisz opis zdjęcia tutaj

Kliknij powyżej w czerwonym kółku. Twój folder pojawi się w Eksploratorze rozwiązań.

Kliknij folder prawym przyciskiem myszy -> Uwzględnij w projekcie .

Manoj Kalluri
źródło
9

Możesz zmienić XML projektu, aby automatycznie dodawać do niego istniejące podfoldery i struktury, takie jak „node_modules” z NPM:

Dotyczy to starszych wersji MSBuild / Visual Studio

<ItemGroup>
   <Item Include="$([System.IO.Directory]::GetFiles(&quot;$(MSBuildProjectDirectory)\node_modules&quot;,&quot;*&quot;,SearchOption.AllDirectories))"></Item>
</ItemGroup>

Dla bieżących wersji MSBuild / Visual Studio:

Wystarczy umieścić go w węzłach xml:

<Project>
</Project>

W takim przypadku wystarczy zmienić $ (MSBuildProjectDirectory) \ node_modules na nazwę folderu.

Bjego
źródło
Tak, czasami ręczna edycja pliku *. * Proj zabierze Cię tam, gdzie chcesz.
Chris O,
1
Więc mówisz, że ktoś mógłby stworzyć wtyczkę, żeby zrobić to wsadowo? Ponieważ nie odtwarzam ręcznie struktury folderów z dziesiątkami folderów ręcznie w pliku XML
Spectraljump,
Dokładnie to, czego szukałem
Vitaliy Kalinin
5

Musisz umieścić swoją strukturę katalogów w katalogu projektu. A następnie kliknij ikonę „Pokaż wszystkie pliki” w górnej części przybornika Solution Explorer. Następnie pojawi się dodany katalog. Następnie musisz wybrać ten katalog, kliknąć prawym przyciskiem myszy i wybrać „Uwzględnij w projekcie”.

nader
źródło
1
To właśnie sugeruje zaakceptowana odpowiedź i jeden z komentarzy pod nią.
Kev
4

To jest to, co robie:

  1. Kliknij prawym przyciskiem myszy rozwiązanie -> Dodaj -> Istniejąca strona internetowa ...
  2. Wybierz folder, w którym znajduje się Twoja witryna. Tylko folder główny witryny.

Następnie wszystko zostanie dodane do twojego rozwiązania od folderów do plików i plików w tych folderach.

Willy David Jr
źródło
4

Wreszcie Visual Studio 2017 pozwala użytkownikowi zaimportować cały katalog jednym kliknięciem. Visual Studio 2017 ma nową funkcjonalność „Otwórz folder ”, która pozwala na otwarcie całego folderu, nawet bez konieczności zapisywania go jako rozwiązania. Kod źródłowy można zaimportować przy użyciu następujących metod.

  1. Menu PlikOtwórz → * Folder ( Ctrl+ Shift+ O)
  2. devenv.exe <source folder>

Obsługuje nawet tworzenie i debugowanie projektów CMake.

Przenieś swoją bazę kodu C ++ do Visual Studio dzięki „Open Folder”

Naren
źródło
4

W Marketplace istnieje teraz rozszerzenie typu open source, które wydaje się robić to, o co prosił PO:

Folder do folderu rozwiązania

folder do rozwiązania folder

Jeśli nie robi dokładnie tego, co chcesz, kod jest dostępny, więc możesz go zmodyfikować, aby dostosować go do swojego scenariusza.

HTH

Yann Duran
źródło
Rozszerzenie nie działało dla mnie w wersji VS 15.9.13 2017
Mateusz Migała
2

Ciekawą sztuczką, którą odkryłem, jest to, że jeśli przejdziesz do „Dodaj istniejące ...”, możesz przeciągnąć folder z otwartego okna dialogowego do swojego rozwiązania.

Mam moje Visual Studio, aby automatycznie otwierało się w trybie administracyjnym, więc było to dla mnie dobre obejście, ponieważ nie chciałem tego cofać, aby to zadziałało.

Yatrix
źródło
1

Dla mnie zadziałało przeciągnięcie folderu do programu Visual Studio, a następnie kliknięcie folderu prawym przyciskiem myszy i wybranie „Otwórz folder w Eksploratorze plików”. Następnie zaznacz wszystko i przeciągnij je do folderu w Visual Studio.

Nacięcie
źródło
0

W systemie Windows 7 możesz wykonać następujące czynności:

Kliknij projekt prawym przyciskiem myszy i wybierz „Dodaj-> Istniejący element”. W wyświetlonym oknie dialogowym przejdź do katalogu głównego katalogu, który chcesz dodać. W prawym górnym rogu znajduje się pole wyszukiwania. Wpisz *.cslub *.cpp, niezależnie od typu plików, które chcesz dodać. Po zakończeniu wyszukiwania wybierz wszystkie pliki, kliknij Dodaj i poczekaj chwilę ...

użytkownik1395598
źródło
5
To nie utrzymuje struktury katalogów - po prostu umieszcza wszystko w folderze, w którym kliknąłeś add.
Marc
0

Najczystszym sposobem, jaki to zrobiłem, jest utworzenie nowego projektu Biblioteki klas w folderze docelowym i przekierowanie wszystkich jego wyników kompilacji w inne miejsce. Nadal pozostawia plik .csproj w tym folderze, ale pozwala zobaczyć go w programie Visual Studio i wybrać, które pliki mają zostać uwzględnione w projekcie.

Jason Kester
źródło
-3

To denerwujące, że Visual Studio nie obsługuje tego natywnie, ale CMake może wygenerować projekt Visual Studio jako obejście.

Poza tym po prostu użyj Qt Creatora. Następnie można wyeksportować projekt Visual Studio.

lama12345
źródło