To pytanie jest rodzaju dwóch w jednym, ale oba dotyczą tego samego problemu.Różne ustawienia * .csproj/* .config dla każdego członka zespołu i oddziału
Jesteśmy zespołem 10 deweloperów, niektórzy programiści wolą korzystać z pełnych wystąpień usług IIS, podczas gdy inni wolą korzystać z IIS-Express. Istnieją zalety korzystania z obu, na przykład usługi IIS najbardziej przypominają produkcję, podczas gdy IIS-Express umożliwia debugowanie edycji i kontynuowania.
Oprócz 10 zespołów roboczych programistów używamy kontroli kodu źródłowego, a my mamy strukturę rozgałęzień. Każda gałąź może mieć różne ustawienia web.config/app.config, takie jak ciągi połączeń z bazą danych. Deweloper może pracować w więcej niż jednym oddziale, więc zazwyczaj mamy jedną bazę danych na oddział, patrzymy na programistów posiadających lokalne bazy danych, ale kolizja nazewnictwa wciąż stanowi problem, niezależnie od podejścia (np. Programista może mieć 2 lokalne bazy danych, po jednym dla każdego oddziału).
Pierwszy problem to ten z plikami csproj, w szczególności z ustawieniami serwera WWW. Jeśli jeden programista sprawdza w pliku csproj, który używa IIS-Express, a drugi programista wykonuje Pobierz najnowszą, nadpisze ich konfigurację, marnując czas i powodując frustrację.
Oczywiście najłatwiejszym rozwiązaniem byłoby zmusić wszystkich do korzystania z jednego narzędzia, jednej konfiguracji, ale wolałbym tego nie robić, szczególnie w przypadku czegoś, co nie ma wpływu na wynikowy wynik (skompilowany kod).
Drugi problem dotyczy plików konfiguracyjnych, pliki konfiguracyjne są przechowywane w sterowaniu źródłowym (tak jak każdy inny plik), więc kiedy wykonujemy rozgałęzienia, pliki te muszą być później ręcznie aktualizowane. Wiem, że istnieją transformacje Debug i Release dla plików konfiguracyjnych, które mogłyby mieć różne ciągi połączeń w obu, ale to nie rozwiązuje problemu, ponieważ dwaj indywidualni programiści mogą pracować w tej samej gałęzi, ale z różnymi ciągami połączeń.
Oczywistym rozwiązaniem jest to, że wszyscy mają zawsze takie same ustawienia, ale niektórzy programiści mogą chcieć użyć instancji LocalDB, inni mogą chcieć korzystać z SQL-Express, podczas gdy serwer pomostowy wykorzystuje pełną instancję SQLServer. Ponownie, jest to kolejne ustawienie, które nie ma wpływu na końcowy wynik.
Nie widziałem żadnych rozwiązań dla moich konkretnych problemów związanych z zarządzaniem konfiguracjami między członkami zespołu oraz między rozgałęzianiem/łączeniem.
Mam skłonność do zmuszania ludzi do posiadania tego samego środowiska. Subtelne różnice między serwerami lub wersjami bazy danych mogą oznaczać różnicę między funkcjami, które działają lub nie są produkowane (przerażający syndrom "działa na moim komputerze"). IIS (lub IIS Express) kontra Cassini jest tam duży. Ale jeśli unikniesz jakichkolwiek wzorców, które potencjalnie mogłyby być problemem, prawdopodobnie będziesz w porządku. –
Zgadzam się, że byłoby to solidne podejście, aby każdy użył tego samego, jeśli moglibyśmy przekonać wszystkich, co to powinno być. Niestety nie jestem w stanie powiedzieć innym, jak pracować. – Matthew