Używamy systemu, który łączy kilka istniejących odpowiedzi na tej stronie, a także opiera się na sugestii Scotta Hanselmana .
Krótko mówiąc, mieliśmy wspólny plik app.config / web.config i większość określonych ustawień w poszczególnych plikach, zgodnie z sugestiami innych odpowiedzi tutaj. np. dla naszych ustawień SMTP plik app.config zawiera
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
Ten plik znajduje się w kontroli źródła. Jednak poszczególne pliki, takie jak ten, nie są:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Jednak to nie koniec historii. A co z nowymi programistami lub nową instalacją źródłową? Większość konfiguracji nie znajduje się już w kontroli źródła, a ręczne tworzenie wszystkich potrzebnych plików .config jest uciążliwe. Wolę mieć źródło, które przynajmniej będzie się kompilować zaraz po wyjęciu z pudełka.
Dlatego przechowujemy wersję plików .config w kontroli źródła o nazwie pliki .config.default . Dlatego świeże drzewo źródłowe wygląda następująco:
Mimo to programista nie ma z tego żadnego pożytku, ponieważ dla programu Visual Studio są to tylko bezsensowne pliki tekstowe. Dlatego plik wsadowy copy_default_config.bat
dba o utworzenie początkowego zestawu plików .config z plików .config.default:
@echo off
@REM Makes copies of all .default files without the .default extension, only if it doesn't already exist. Does the same recursively through all child folders.
for /r %%f in (*.default) do (
if not exist "%%~pnf" (echo Copying %%~pnf.default to %%~pnf & copy "%%f" "%%~pnf" /y)
)
echo Done.
Skrypt można bezpiecznie ponownie uruchomić, ponieważ programiści, którzy mają już swoje pliki .config, nie będą ich nadpisywać. Dlatego można sobie wyobrazić uruchomienie tego pliku wsadowego jako zdarzenia przed kompilacją. Wartości w plikach .default mogą nie być dokładnie poprawne dla nowej instalacji, ale są rozsądnym punktem wyjścia.
Ostatecznie to, co kończy każdy programista, to folder plików konfiguracyjnych, który wygląda mniej więcej tak:
Może się to wydawać trochę zawiłe, ale zdecydowanie lepiej niż kłopoty programistów nadeptywających sobie nawzajem.