Dlaczego opcja „Ustaw jako startowe” jest przechowywana w pliku suo, a nie w pliku sln?


175

Wygląda na to, że to ustawienie powinno być przechowywane w pliku rozwiązania, więc jest współdzielone przez wszystkich użytkowników i część kontroli kodu źródłowego. Ponieważ nie sprawdzamy pliku suo, każdy użytkownik musi ustawić to osobno, co wydaje się dziwne.

Odpowiedzi:


46

Dlaczego nie miałoby to być preferencją specyficzną dla użytkownika?

Jeśli mam rozwiązanie z 10 plikami, a jeden programista głównie testuje / używa jednego z tych narzędzi, dlaczego miałoby to wpływać na to, co uruchamiam?

Myślę, że stwardnienie rozsiane dokonało właściwego wyboru w tej sprawie. Projekt, który chcę rozpocząć, nie jest koniecznie projektem, który chcą rozpocząć inni programiści.


133
Często będziesz mieć projekt, który najprawdopodobniej będzie pożądanym przez większość ludzi projektem startowym do debugowania (np. Witryna internetowa) i nie chcesz, aby biblioteka klas była projektem startowym. Nie rozumiem, dlaczego MS nie mógł zapewnić odpowiedniego mechanizmu (nie tego, co wygląda na włamanie, tj. Umieszczenie domyślnego na górze w pliku .sln) do ustawienia globalnego domyślnego projektu startowego, a następnie zezwalania na. suo, aby go zastąpić w razie potrzeby.
Jez,

27
Jest, w pewnym sensie ... Przenieś projekt, który chcesz ustawić jako domyślny projekt startowy, na pierwszy projekt w pliku sln. Usuń plik suo, ponownie otwórz rozwiązanie i woila, ten pierwszy projekt powinien być startowy. Mogą się do tego przyczyniać inne czynniki, ale znalazłem to, gdy zauważyłem, że jeden konkretny projekt zachowywał domyślne ustawienia, gdy sprawdzałem czysty projekt z kontroli źródła.
misteraidan

2
Jest to problem podczas korzystania z serwera kompilacji, ponieważ wymagałoby to sprawdzenia suo w kontroli wersji, aby ustawić prawidłowy projekt startowy, a sprawdzenie suo w kontroli wersji jest złym pomysłem.
markshancock

2
@markshancock: Dlaczego serwer kompilacji miałby przejmować się projektem startowym? Nigdy nie postrzegałem tego jako problemu.
Jon Skeet

18
Przepraszam, Jon, ale dam ci tutaj -1. Wierzę, że programiści powinni mieć możliwość pobrania kodu, a następnie naciśnięcia klawisza F5, oczekując najbardziej typowej konfiguracji programistycznej do zbudowania i uruchomienia. Oczywiście powinieneś mieć możliwość dostosowania swoich startupów do osobistych okoliczności, ale powinniśmy być w stanie ustawić domyślne dla większości użytkowników, jak wspomniano powyżej. Wydaje się, że odpowiedź Olivera w jakiś sposób to prowadzi, chociaż wydaje się, że wiele projektów start-upowych pozostanie niemożliwych do sprawdzenia w kontroli źródła, a szkoda.
Stephen Holt

376

Jest absolutnie konieczne, aby każdy mógł samodzielnie zdefiniować swój projekt StartUp, jak już powiedział Jon . Ale posiadanie dedykowanego domyślnego byłoby super i jak mogę powiedzieć, jest to możliwe!

Jeśli nie masz pliku suo w katalogu rozwiązania, program Visual Studio wybiera pierwszy projekt w pliku .sln jako domyślny projekt startowy.

  1. Zamknij program Visual Studio i otwórz plik .sln w swoim ulubionym edytorze tekstu. Począwszy od linii 4, można zobaczyć wszystkie swoje projekty w kapsułkach Project- EndProjectlinie.

  2. Wytnij i wklej żądany domyślny projekt startowy na pierwszym miejscu.

  3. Usuń plik .suo.

  4. Otwórz swoje rozwiązanie w programie Visual Studio. Ta daa!

Czy jest jakaś specjalna nagroda, jeśli wiesz coś, czego Jon nie wie? ;-)


1
Wreszcie! Dręczyło mnie to od dawna, ale już nie! Tkanks :)
mdonatas

4
Wydaje się, że działa tylko wtedy, gdy nie w folderze rozwiązań: mam na myśli, że ta sztuczka działa w projektach root, z mojego doświadczenia z niektórymi rozwiązaniami, które mam.
jdehaan

25
ŁAŁ! Skeeted Jon! :))
Andrei Rînea

3
A jeśli istnieją dwa domyślne projekty - jak mogę domyślnie uruchomić oba?
Amy B,

6
@Oliver: Kliknij prawym przyciskiem myszy Rozwiązanie -> Ustaw projekty startowe ... -> Wiele projektów startowych. Jedno kliknięcie uruchamia wiele.
Anton

46

W większości przypadków ustawienie domyślne ma sens.

Znacznie lepiej byłoby dostosować domyślny projekt startowy i zapisać go w pliku .sln, ale programista może to zmienić w swoim pliku .suo. Jeśli ustawienie uruchamiania nie zostanie znalezione w pliku .suo, zostanie użyty domyślny projekt startowy z pliku .sln.

W rzeczywistości zostało to zasugerowane w witrynie UserVoice programu Visual Studio .


Połączona usługa UserVoice jest „zamknięta dla głosowania”, ale nie ma komentarza, dlaczego.
yzorg

To zdecydowanie lepsze stanowisko w porównaniu z przyjętą odpowiedzią. Ani razu nie pracowałem w zespole, który uważał, że ustawienie tego dla każdego użytkownika jest korzystne. Prowadzi to tylko do dodatkowej konfiguracji na świeżych klonach itp.
Trevor Reid

3

Napisałem małe narzędzie wiersza poleceń dla systemu Windows o nazwie, slnStartupProjectaby automatycznie ustawić projekt startowy:

slnStartupProject slnFilename projectName

Osobiście używam go do ustawienia projektu startowego po wygenerowaniu rozwiązania za pomocą cmake, który zawsze ustawia ALL_BUILDprojekt fikcyjny jako pierwszy projekt w rozwiązaniu.

Źródło jest na GitHub. Mile widziane są widelce i opinie.


Dzięki za to! Miałem dokładnie ten problem z cmake i twoje narzędzie działa świetnie!
sippa

1
Nie ma za co! Jestem szczęśliwy, że pomaga, ponieważ dręczyło mnie to od lat, zanim zdecydowałem się rozwiązać ten problem na dobre. Naprawdę nie rozumiem, dlaczego ludzie toczą o to filozoficzne kłótnie, podczas gdy w większości przypadków jest to wyraźnie przydatne.
michaK

Ty ... czekaj ... co? - generujesz plik .sln ręcznie? ... Co to za czary?
BrainSlugs83

3

Jeśli używasz GIT, możesz zatwierdzić domyślny plik SUO, a następnie oznaczyć go jako niezmieniony za pomocą

git update-index --assume-unchanged YourSolution.suo

Działa również, jeśli chcesz mieć więcej niż jeden projekt w domyślnej grupie początkowej. Jedyną wadą, o której wiem, jest to, że to polecenie musi być uruchamiane przez każdego, kto nie chce zatwierdzać pliku SUO.

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.