2009-11-14 14 views
58

Recientemente comencé a trabajar en varios proyectos de C# en Visual Studio como parte de un plan para un sistema a gran escala que se utilizará para reemplazar nuestro sistema actual construido a partir de un conjunto improvisado de varios programas y guiones escritos en C y Perl. Los proyectos en los que ahora estoy trabajando han alcanzado una masa crítica por estar comprometidos con la subversión. Me preguntaba qué se debe y qué no se debe comprometer con el repositorio de proyectos de Visual Studio. Sé que va a generar varios archivos que no son más que artefactos de construcción y que realmente no necesitan comprometerse, y me preguntaba si alguien tenía algún consejo para usar SVN correctamente con Visual Studio. Por el momento, estoy usando un servidor SVN 1.6 con beta de Visual Studio 2010. Cualquier consejo, opiniones son bienvenidas.Mejores prácticas para proyectos de Subversion y Visual Studio

+1

Esto es VS2010 C#. Hay algunas diferencias entre esto y VS2010 C++, por ejemplo. Dale la etiqueta C#. – Bitterblue

Respuesta

86

According to MSDN:

Se pueden añadir los siguientes archivos a Visual control de código fuente del Estudio:

  • Archivos de soluciones (*.sln).
  • Archivos de proyecto, por ejemplo, *.csproj, *.vbproj archivos.
  • Archivos de configuración de la aplicación, basados ​​en XML, utilizados para controlar el comportamiento en tiempo de ejecución de un proyecto de Visual Studio.

Los archivos que no se puede agregar a control de código fuente son los siguientes:

  • ficheros de opciones de usuario Solución (*.suo).
  • Archivos de opción de usuario del proyecto, por ejemplo, *.csproj.user, *.vbproj.user archivos.
  • Archivos de información web, por ejemplo, *.csproj.webinfo, *.vbproj.webinfo, que controlan la ubicación raíz virtual de un proyecto web.
  • Generar archivos de salida, por ejemplo, *.dll y *.exe archivos.
+2

Esa es una buena lista. Básicamente, usted quiere un conjunto mínimo de archivos necesarios para compilar los proyectos. –

+0

Hay un [caso] (http://stackoverflow.com/a/72370/4847772) que se creará para la confirmación del '.user', al menos en algunos casos. Esos archivos que uno no agrega deben agregarse a ['svn: ignorar'] (http://svnbook.red-bean.com/en/1.8/svn.advanced.props.special.ignore.html). – PJTraill

+0

Aquellos que usan Visual Studio 2015 también querrán excluir la carpeta '.vs' del control de origen. Ver http://stackoverflow.com/q/31526899/2615878. – Theophilus

11

nivel Solución:

  • añadir el archivo de solución .sln
  • ignorar el archivo de opciones de usuario solución .suo

nivel de proyecto:

  • añadir el .csproj, .vbproj (y C++ proj?) archivos
  • ignoran el .csproj.user, .vbproj.user archivos
  • ignorar el directorio bin
  • ignorar el directorio obj
  • ignoran los archivos/directorios que consiguen generan durante el tiempo de ejecución (es decir. logs)

Si utiliza y complementos VS, pueden generar archivos que también deben ignorar (es decir. ReSharper genera .resharper y .resharper.user archivos).

Los elementos de ignorar pueden ignorarse explícitamente por nombre de archivo (es decir, MyProject.csproj), o por un patrón de comodín (es decir, *.csproj.user).


Una vez que haya fijado sus ignora arriba, comprobando una copia limpia de la fuente luego construir entonces debe mostrar ninguna modificación (es decir. No hay nuevos archivos sin versión).

16

Sugeriría usar AnkhSVN - un complemento de control de fuente de Subversion para Visual Studio 2008/2010.

Puede usarlo para realizar su adición inicial y confirmar la solución, los proyectos y las fuentes en el repositorio y no agregará ninguno de los artefactos de compilación. No agregará nada que genere su compilación, solo los archivos a los que hace referencia su solución. Si hay otras partes y piezas que necesita que no están en su solución, puede agregarlas después.

+2

Probé AnkhSVN, y encontré que tendía a interpretar prematuramente acciones dentro del IDE como acciones en el control de código fuente, y alentar a los desarrolladores a realizar confirmaciones de archivo único. Estoy mucho más feliz con Tortuga. – PJTraill

+0

¡Pero es útil que sepa qué ignorar! – PJTraill

5

Incluiría manualmente todos los archivos que creo que no debería controlar la versión.

Mi patrón global de ignorado es:

.dll .pdb .exe .cache .webinfo .snk bin obj depuración _Resharper.ReSharper usuario

15

Ponga los siguientes archivos en el control de versiones:.

  • .dsw (VS6 espacio de trabajo)
  • .dsp (proyecto VS6)
  • .sln (VS Solution)
  • * proj los archivos de proyecto (VS) de varios tipos
  • , por supuesto, los archivos de origen y otros artefactos se crea

Haz no poner los siguientes archivos en el control de versiones:

  • .ncb (algo que ver con la navegación o intellsense)
  • .suo (configuración del espacio de trabajo del usuario, como la colocación de ventanas, etc - creo)
  • .user (configuración del proyecto de usuario como puntos de interrupción, etc - Creo)

Además, no se pone en ningún archivo de objetos, archivos ejecutables, archivos generados automáticamente (como cabeceras que podrían generarse).

En cuanto a archivos ejecutables y otros archivos generados, puede haber una excepción si desea poder archivar lanzamientos. Puede ser una buena idea, pero es probable que desee administrarlo de forma un poco diferente y posiblemente en un lugar diferente al código fuente. Si haces esto, también archiva tus archivos .pdb para que puedas depurar las cosas más tarde. Es posible que desee utilizar un Servidor de símbolos para almacenar sus símbolos archivados (consulte Debugging Tools for Windows para ver el servidor de símbolos y su documentación).

Aquí está mi lista de archivos-VS específico que excluyo del SVN:

Ankh.Load 
*.projdata 
*.pdb 
*.positions 
*proj.user 
*proj.*.user 
*.ncb 
*.suo 
*.plg 
*.opt 
*.ilk 
*.pch 
*.idb 
*.clw 
*.aps 
+0

Nit-picking: ¡diga 'no poner en ... ejecutables', pero en el próximo párrafo usted dice que uno podría! – PJTraill

2

En caso de que usted está utilizando la lista de ignorados, SVN entre mayúsculas y minúsculas. Así que recuerde ignorar las carpetas bin y bin por separado.

Además, tenía una pregunta ... ¿por qué se necesita mucho tiempo para actualizar el icono de estado? A veces se vuelve muy confuso.

1

Consulte Mercurial .hgignore for Visual Studio 2008 projects para obtener una lista de omisiones de Mercurial. No estoy familiarizado con la sintaxis de la lista de ignorar SVN, pero este hilo tiene algunas buenas listas de qué ignorar en Visual Studio.

Cuestiones relacionadas