Usamos un sistema que combina varias de las respuestas existentes en esta página, más dibuja en this suggestion by Scott Hanselman.
En resumen, lo que hicimos fue tener un app.config/web.config común, y tener la mayoría de las configuraciones específicas en archivos individuales, como se sugiere en otras respuestas aquí. p.ej. para nuestra configuración SMTP, la aplicación.config contiene
<system.net>
<mailSettings>
<smtp configSource="config\smtp.config" />
</mailSettings>
</system.net>
Este archivo es de control de código fuente. Sin embargo, los archivos individuales, como este, no son:
<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
<network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>
Sin embargo, esa no es la historia donde termina la historia. ¿Qué hay de los nuevos desarrolladores o una nueva instalación de origen? La mayor parte de la configuración ya no está en control de fuente, y es complicado construir manualmente todos los archivos .config que necesitan. Prefiero tener una fuente que compile al menos de manera inmediata.
Por lo tanto, mantenemos una versión de los archivos .config en el control de código fuente, denominada .config.default archivos. Por tanto, un árbol de código fuente fresca se ve así:
Aún así, no es realmente ninguna utilidad para el desarrollador, ya que a Visual Studio sólo son archivos de texto sin sentido. De ahí que el archivo por lotes, copy_default_config.bat
, se encarga de la creación de un conjunto inicial de archivos .config de los archivos .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.
El guión está segura re-ejecutable, en el que los desarrolladores que ya tienen su .config los archivos no los sobrescribirán. Por lo tanto, uno podría concebiblemente ejecutar este archivo por lotes como un evento previo a la construcción. Los valores en los archivos .default pueden no ser exactamente correctos para una nueva instalación, pero son un punto de partida razonable.
En última instancia lo que cada desarrollador termina con una carpeta de archivos de configuración que se ve algo como esto:
Puede parecer un poco complicado, pero es sin duda preferible a la molestia de los desarrolladores pisando los dedos de los pies del otro.
Voté para reabrir, ya que este es un problema común para los desarrolladores de estudios visuales e involucra directamente las herramientas que los desarrolladores están utilizando. (de ahí los votos) –
De acuerdo, este es un problema persistente ya que el tamaño de nuestro equipo ha crecido y varios intentos de resolución han sido insatisfactorios. – DiskJunky