Jak powiedzieć programowi Visual Studio, aby wykluczył foldery z polecenia Znajdź w plikach?


89

Używamy subversion, więc w naszym rozwiązaniu mamy podfoldery o nazwie _svn. Wykonanie funkcji Znajdź w plikach zwraca ciągi z tych podfolderów. Czy mimo wszystko można powiedzieć programowi Visual Studio, aby ignorował te pliki?


7
Trochę mi to przeszkadzało w przypadku funkcji Find in Files w programie Visual Studio. Jak wspomniał @rafbel, w końcu wyłączam „włączanie podfolderów”, ale kończy się to tylko dodatkowymi krokami lub zapominaniem o późniejszym wyłączeniu. Byłoby miło powiedzieć, że przeszukaj główny folder główny, ale zignoruj ​​mój folder „dostawców”, ponieważ nie martwię się o biblioteki innych firm ..
Rich Finelli

Jeśli ktoś znajdzie lub doda to pytanie do strony UserVoice VS, zamieść łącze tutaj, abyśmy wszyscy mogli zagłosować za nim!
pbarranis

To mnie doprowadza do szału. Niedawno odkryłem możliwość dostosowywania listy rozwijanej „Szukaj w”. Nasze rozwiązanie obejmuje kilka projektów, które składają się na część instalatora, więc dobrze jest ograniczyć wyszukiwanie tylko do tych projektów, gdy nad nim pracuję. Utworzyłem więc profil „Szukaj w” Instalatora. Jeśli jednak nie chcę ręcznie określić każdego folderu i podfolderu każdego projektu, muszę pozostawić zaznaczone pole „Uwzględnij podfoldery”. Spowoduje to pobranie wszystkich folderów bin i obj. Bardzo irytujące.
Brian Colavito

Odpowiedzi:


31

Możesz skonfigurować zestaw folderów, które będą używane do wyszukiwania. W oknie Znajdź i zamień, po prawej stronie pola „Szukaj w”, znajduje się opcja „Wybierz foldery wyszukiwania”, w której możesz skonfigurować te zestawy folderów.
Pamiętaj tylko, aby wyłączyć opcje „Uwzględnij podfoldery”, jeśli dodałeś główny folder projektu.
Jeśli nie masz setek folderów, to rozwiązanie powinno działać.


15
Nie, nie powinno, ponieważ wyjaśnia, jak uwzględniać foldery w wyszukiwaniu zamiast je wykluczać. To dość duża różnica IMHO.
Jan Palas

2
Mam setki folderów. Wszyscy mieszkają w jednym zwanym node_moduleslol
nic niepotrzebnego

23

Nigdy nie miałem problemu z globalnym znalezieniem, dopóki nie przenieśliśmy się do Visual Studio 2017 i nie zaczęliśmy od aplikacji Angular + .net Core ... (głównie problemy z przeszukiwanym folderem HUGE node_modules)

Zauważyłem, że użycie właściwości wykluczenia programu MSBuild DefaultItemExcludes działa dobrze, aby wykluczyć z globalnego wyszukiwania w programie Visual Studio 2017 ..

Teraz domyślnie otwieram plik projektu (.csproj) dla nowego projektu podstawowego w VS2017 i dostosowuję właściwość w następujący sposób, aby wykluczyć node_modules (czasami dodaję też wwwroot):

<DefaultItemExcludes>$(DefaultItemExcludes);node_modules\**</DefaultItemExcludes>

Zobacz także https://github.com/dotnet/cli/issues/7525 , tam radzą dołączać foldery przed wykluczeniem i wydają się używać ukośnika zamiast ukośnika w tył, na przykład:

<PropertyGroup>
  <DefaultItemExcludes>node_modules/**;$(DefaultItemExcludes)</DefaultItemExcludes>
</PropertyGroup>

Mam nadzieję, że pomoże to każdemu, kto ma problemy z globalnym wyszukiwaniem / wyszukiwaniem VS2017.


Dziękuję bardzo. Dziwne, że to pytanie jest zadawane wiele razy w SO i nikt nie wymyślił tej odpowiedzi
Ashraf Sabry

Dzięki, to powinna być odpowiedź
Dan Parker

Wszystkie moje projekty Angular w programie Visual Studio 2017 to projekty „folderów” bez żadnych plików MSBuild lub plików projektów ( *.csprojitp.), Więc nie mogę DefaultItemExcludesnigdzie ustawiać . Jestem SOL?
Dai

To nie działa w VS 2019. Próbowałem wykluczyć bootstrap.cssplik, ale i tak został przeszukany. <DefaultItemExcludes>assets/css/**;$(DefaultItemExcludes)</DefaultItemExcludes>
VDWWD

19

W „Znajdź w plikach”, w „Typach plików” lub „Spójrz na te typy plików” możesz użyć:

!*\ExcludeFolder\*

Przykład:

!*\bin\*;!*\obj\*;!*\.*;!*\ExcludeFolder\*

wprowadź opis obrazu tutaj


Ten zrzut ekranu pochodzi z VS 2019. Ta odpowiedź nie działa w VS 2017.
Scott Hutchinson

1
Dokładnie tego szukałem, gdy napotkałem ten problem w VS2019. Dziękuję Ci!
Mass Dot Net

1
Niesamowite rzeczy. Używam Node i nigdy nie chcę przeszukiwać folderu node_modules. Dzięki
BoundForGlory

9

Miałem ten problem podczas przechodzenia do Windows 10 przy użyciu Visual Studio 2015 i TortoiseSVN. Wcześniej wszystkie foldery .svn były ukryte, więc nie pojawiały się w wynikach wyszukiwania. Aby rozwiązać ten problem, po prostu przeszedłem do właściwości folderu w Eksploratorze Windows i sprawdziłem atrybut „Ukryty” dla folderu .svn. Po odświeżeniu widoku folderu w programie Visual Studio folder .svn nie jest już wyświetlany i jest ignorowany podczas korzystania z funkcji Find!

Ustaw atrybut folderu .svn na ukryty


Przepraszam, nie zainstalowałem jeszcze VS 2017, więc nie mogę tego sprawdzić.
jasna funkcja

1
Wydaje się, że to nie działa w VS 2017. Co więcej, IISExpress nie może znaleźć folderu, więc też coś zepsuł :(
pbarranis

Działa idealnie w VS 2015 Pro. Nie widziałem jeszcze żadnych negatywnych skutków :-)
BizzyBob

5

Zamiast wyszukiwać pliki w katalogu (w tym przypadku katalogu rozwiązania), możesz ograniczyć wyszukiwanie do plików, które są częścią projektu lub rozwiązania. Te w katalogach _svn będą więc ignorowane.


2
W rozwiązaniu mamy zagnieżdżone foldery projektów. Tak więc wchodzenie w każdy z nich, aby znaleźć coś, jest czasochłonne
Bernard

Okno dialogowe „Znajdź w plikach” zawiera pole „Szukaj w”, które można ustawić na „Bieżący projekt” lub „Całe rozwiązanie”. Czy to drugie nie jest dla ciebie przydatne? W takim razie musiałem coś przeoczyć ...
Xavier Nodet

2
@XavierNodet przynajmniej w moim przypadku są pliki, które mam w swoim rozwiązaniu, których nigdy nie chcę przeszukiwać, ale potrzebuję w moim rozwiązaniu, aby zostały skopiowane do katalogu wyjściowego - np. urządzenia testowe lub inne statyczne zasoby tekstowe.
Tom Lianza,

5

Znalazłem w Visual Studio 2017, zwłaszcza gdy używam Angular Cli że wygenerowane pliki javascript lub inne pliki kompilacji mogą być czasami nieświadomie dodawane do twojego projektu. Może to powodować kilka bólów głowy, w tym dodanie kilku plików do wyszukiwania i naprawdę spowolnienie działania, szczególnie Intellisense, ponieważ przeszukuje wszystkie wygenerowane pliki na wierzchu plików źródłowych.

Najłatwiejszym sposobem rozwiązania tego problemu jest po prostu kliknięcie prawym przyciskiem myszy folderu kompilacji (tj. {Project}/dist) I wybranie Exclude from Project. Spowoduje to usunięcie folderu z projektu, ale wygenerowana zawartość będzie nadal dostępna w czasie wykonywania, jest po prostu ukryta w interfejsie użytkownika.

wprowadź opis obrazu tutaj

Jeśli nadal chcesz widzieć pliki, możesz wyświetlić ukryte katalogi i pliki, wybierając Show all Fileslub klikając ikonę: wprowadź opis obrazu tutaj w górnej części Eksploratora rozwiązań.

Zasadniczo chcesz wykluczyć wszystkie foldery kompilacji z projektu / rozwiązania.


Myślę, że nie można „wykluczyć” folderu, tylko pliki. Przynajmniej w mojej wersji programu Visual Studio 2017. Kiedy klikam prawym przyciskiem myszy folder w moim projekcie, opcja Wyklucz z projektu nie pojawia się w menu kontekstowym.
Pete

1
Ta opcja nie jest dostępna dla projektów witryn sieci Web w VS 2017.
richardtallent

@richardtallent: Podwójnie sprawdziłem zarówno w VS2017, jak i VS2019 i jest tam opcja usunięcia folderu. Proszę zobaczyć moją zaktualizowaną odpowiedź na zrzut ekranu, gdzie znaleźć opcję.
Andy Braham

@AndyBraham, używam typu projektu WebSite (E24C65DC-7377-472B-9ABA-BC803B73C61A w pliku rozwiązania), który moim zdaniem może być starszym typem projektu, który nie jest już dostępny w oknie dialogowym Nowy projekt. Opcja „wyklucz” nie jest dostępna w menu kontekstowym folderów w projektach tego typu. Buduję swoją witrynę poza VS przy użyciu Vue CLI / UI i Gulp, więc jedyną poprawką, która działała dla mnie, było po prostu usunięcie projektu z mojego rozwiązania (i tak używam VS Code do kodu front-end).
richardtallent

3

Nie sądzę, żebyś mógł to ustawić (w końcu prosisz o wyszukiwanie „całego rozwiązania”), ale często możesz usunąć folder z projektu / ukryć katalog w systemie plików (dla typu projektu witryny sieci Web).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.