Pregunta

¿Es una buena práctica comprometer un archivo .sln al control de origen? ¿Cuándo es apropiado o inapropiado hacerlo?

Actualizar Hubo varios puntos buenos en las respuestas. ¡Gracias por las respuestas!

¿Fue útil?

Solución

Creo que está claro por las otras respuestas que los archivos de solución son útiles y deberían comprometerse, incluso si no se usan para compilaciones oficiales. Son útiles para cualquiera que use funciones de Visual Studio como Ir a definición / declaración.

Por defecto, no contienen rutas absolutas ni ningún otro artefacto específico de la máquina. (Desafortunadamente, algunas herramientas complementarias no mantienen adecuadamente esta propiedad, por ejemplo, AMD CodeAnalyst). Si tiene cuidado de usar rutas relativas en sus archivos de proyecto (tanto C ++ como C #), serán independientes de la máquina también.

Probablemente la pregunta más útil es: ¿qué archivos debe excluir? Aquí está el contenido de mi archivo .gitignore para mis proyectos VS 2008:

*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/

(La última entrada es solo para el generador de perfiles AMD CodeAnalyst).

Para VS 2010, también debe excluir lo siguiente:

ipch/
*.sdf
*.opensdf

Otros consejos

Sí, creo que siempre es apropiado. La configuración específica del usuario se encuentra en otros archivos.

Sí, deberías hacer esto. Un archivo de solución contiene solo información sobre la estructura general de su solución. La información es global para la solución y es probable que sea común para todos los desarrolladores de su proyecto.

No contiene ninguna configuración específica del usuario.

Definitivamente deberías tenerlo. Además de las razones que otras personas mencionaron, es necesario hacer posible la construcción en un solo paso de todos los proyectos.

En general, estoy de acuerdo en que los archivos de la solución deben registrarse, sin embargo, en la empresa para la que trabajo hemos hecho algo diferente. Tenemos un repositorio bastante grande y los desarrolladores trabajan en diferentes partes del sistema de vez en cuando. Para respaldar nuestra forma de trabajar, tendríamos un archivo de solución grande o varios más pequeños. Ambos tienen algunas deficiencias y requieren trabajo manual por parte de los desarrolladores. Para evitar esto, hemos creado un complemento que maneja todo eso.

El complemento permite a cada desarrollador verificar un subconjunto del árbol de origen para trabajar simplemente seleccionando los proyectos relevantes del repositorio. Luego, el complemento genera un archivo de solución y modifica los archivos de proyecto sobre la marcha para la solución dada. También maneja referencias. En otras palabras, todo lo que el desarrollador tiene que hacer es seleccionar los proyectos apropiados y luego se generan / modifican los archivos necesarios. Esto también nos permite personalizar otras configuraciones para garantizar los estándares de la compañía.

Además, utilizamos el complemento para admitir varias políticas de registro, lo que generalmente evita que los usuarios envíen código defectuoso / no conforme al repositorio.

Sí, las cosas que debe confirmar son:

  • solución (* .sln),
  • archivos de proyecto,
  • todos los archivos fuente,
  • archivos de configuración de la aplicación
  • crear scripts

Las cosas que no debe no comprometer son:

  • archivos de opciones de usuario de solución (.suo),
  • compilación de archivos generados (por ejemplo, usando un script de compilación) [Editar:] - solo si todos los scripts y herramientas de compilación necesarios están disponibles bajo el control de versión (para garantizar que las compilaciones sean auténticas en el historial de cvs)

Con respecto a otros archivos generados automáticamente, hay un hilo separado .

Sí, debería ser parte del control de origen. Cada vez que agrega / elimina proyectos de su aplicación, .sln se actualizará y sería bueno tenerlo bajo control de origen. Le permitiría extraer las versiones del código 2 de su aplicación y hacer una compilación directamente (si es necesario).

Sí, siempre desea incluir el archivo .sln, que incluye los enlaces a todos los proyectos que están en la solución.

En la mayoría de las circunstancias, es una buena idea enviar archivos .sln al control de origen.

Si sus archivos .sln son generados por otra herramienta (como CMake), entonces probablemente no sea apropiado ponerlos en control de origen.

Lo hacemos porque mantiene todo sincronizado. Todos los proyectos necesarios se encuentran juntos, y nadie tiene que preocuparse por perder uno. Nuestro servidor de compilación (Ant Hill Pro) también usa sln para determinar qué proyectos compilar para una versión.

Por lo general, colocamos todos nuestros archivos de soluciones en un directorio de soluciones. De esta forma separamos un poco la solución del código, y es más fácil elegir el proyecto en el que necesito trabajar.

El único caso en el que incluso consideraría no almacenarlo en el control de origen sería si tuviera una solución grande con muchos proyectos que estuviera en control de origen, y quisiera crear una pequeña solución con algunos de los proyectos desde el principal solución para algún requisito transitorio privado.

Sí: todo lo que se use para generar su producto debe estar en control de origen.

Mantenemos los archivos de solución en TFS Version Control. Pero como la solución principal es realmente grande, la mayoría de los desarrolladores tienen una solución personal que contiene solo lo que necesitan. El servidor de compilación utiliza principalmente el archivo de solución principal.

¡

.slns es la única cosa con la que no hemos tenido problemas en tfs!

1) Crear un nuevo proyecto en VS
2) Haga clic derecho en la solución en el Explorador de soluciones, seleccione Agregar al control de origen

¿Se agrega el sln al control de fuente? Esa es tu respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top