.gitignore para proyectos y soluciones de Visual Studio

8 minutos de lectura

¿Qué archivos debo incluir en .gitignore cuando usas Git junto con Estudio visual Soluciones (.sln) y Proyectos?

  • Pregunta relacionada: stackoverflow.com/questions/72298/…

    – Greg Hewgill

    27 de enero de 2010 a las 1:35

  • También hay un tema sobre esto para Hg: stackoverflow.com/questions/34784/… . Sin embargo, no sé si esa configuración se puede transferir directamente a git.

    – Martín Suchanek

    27 de enero de 2010 a las 2:03


  • Tendría cuidado de ignorar .exe y .pdb, puede ignorar sin darse cuenta las herramientas que almacena con su fuente (nant, nunit gui, etc.).

    – James Gregorio

    21 de mayo de 2010 a las 13:32

  • @murki – parece que esta es la respuesta: coderjournal.com/2011/12/…

    – Ronnie Overby

    25 de enero de 2012 a las 19:19

  • Con .sln archivos registrados, obtenemos diferencias de ruido como -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 ¿Se puede evitar esto?

    – Jean Jordan

    26 de febrero de 2016 a las 7:52


Ver los GitHub oficiales “Colección de útiles .gitignore plantillas”.

los .gitignore para Visual Studio se puede encontrar aquí:
https://github.com/github/gitignore/blob/main/VisualStudio.gitignore

  • Tenga en cuenta. Este archivo contiene una entrada para ignorar los archivos publicados. Sin embargo, la forma en que está escrita la regla, ignorará cualquier carpeta que haya llamado “Publicar” y, por lo tanto, ignorará todo lo que tenga debajo. No se dirige específicamente a la salida de “Publicación” de Visual Studio. Lo ignorará, pero también otras cosas.

    – Rex Whitten

    20/10/2014 a las 14:43

  • @starfighterxyz si cree que hay un error en gitignore, recomendaría crear una solicitud de extracción.

    – Cronial

    20/10/2014 a las 18:12

  • Bueno, no sé (¿lo suficiente?) para decir que es un error. Simplemente estaba usando Publish/ como nombre de controlador y como nombres de carpeta de proyecto. Creo que esto es solo un caso extremo. Solo algo para salvar unas horas de tu vida 🙂

    – Rex Whitten

    30/10/2014 a las 19:39

  • ¿Alguna idea de por qué los archivos específicos de Windows como Thumbs.db y Desktop.ini no aparecen en el archivo del enlace mencionado?

    – Aprendiz

    29 de agosto de 2016 a las 8:22


  • @Learner porque estos están en archivos diferentes. Debe agregarlos a su gitignore global personal, en lugar de registrarlos. github.com/github/gitignore/tree/master/Global

    – Cronial

    6 de septiembre de 2016 a las 3:29

Hay una herramienta en línea que le permite generar un archivo .gitignore basado en su sistema operativo, IDE, idioma, etc. Eche un vistazo a http://www.gitignore.io/.

ingrese la descripción de la imagen aquí

El 20/8/2014, aquí está el archivo que se genera para Visual Studio + Windows.

# Created by http://www.gitignore.io

### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/

# Roslyn cache directories
*.ide/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

#NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding addin-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings 
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# If using the old MSBuild-Integrated Package Restore, uncomment this:
#!**/packages/repositories.config

# Windows Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/


### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

  • Idealmente, incluiría una licencia dentro del archivo. (Idealmente, esa sería una licencia que no plantea dudas en un entorno corporativo).

    –Evgeni Sergeev

    25 de febrero de 2019 a las 23:31

  • Además, esto debería tener .vs/consulte aquí: stackoverflow.com/a/31879242/1143274

    –Evgeni Sergeev

    25 de febrero de 2019 a las 23:44

Uso el siguiente .gitignore para proyectos de C#. Se agregan patrones adicionales a medida que se necesitan.

[Oo]bj
[Bb]in
*.user
*.suo
*.[Cc]ache
*.bak
*.ncb
*.log 
*.DS_Store
[Tt]humbs.db 
_ReSharper.*
*.resharper
Ankh.NoLoad

  • En desacuerdo con *.resharper. Coincidencia de archivos *.ReSharper.user debe ser ignorado, pero eso es atendido por el *.user regla de arriba.

    – Drew Noakes

    9 de julio de 2012 a las 19:25


  • @DrewNoakes: ¿Cuáles son los archivos de ReSharper que cree que deberían controlarse por revisión?

    – Por Lundberg

    11/10/2013 a las 19:48

  • @PerLundberg Una razón que vale la pena considerar es que puede configurar opciones de formato de proyecto estándar, etc., y guardar los archivos de configuración con el proyecto. Si esto está en git, hace que sea más fácil para todos los usuarios de Resharper mantener el formato del proyecto de manera consistente.

    – Marc

    29 de junio de 2015 a las 4:41

Para los interesados ​​en lo que microsoft piensa que debería incluirse en el gitignore, aquí está el predeterminado que Visual Studio 2013 RTM genera automáticamente al crear un nuevo Git-Repository:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/

# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
!packages/*/build/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.Publish.xml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf


#LightSwitch generated files
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml

# =========================
# Windows detritus
# =========================

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac desktop service store files
.DS_Store

Ver: Agregue un archivo .gitignore predeterminado en MSDN

Si bien debe mantener su archivo NuGet packages.config, debe excluir la carpeta de paquetes:

#NuGet
packages/

Por lo general, no almaceno binarios, ni nada generado desde mi fuente, en el control de fuente. Sin embargo, hay diferentes opiniones al respecto. Si facilita las cosas para su sistema de compilación, ¡hágalo! Sin embargo, diría que no está versionando estas dependencias, por lo que solo ocuparán espacio en su repositorio. Almacenar los binarios en una ubicación central y luego confiar en el archivo packages.config para indicar qué versión se necesita es una mejor solución, en mi opinión.

  • ¿A alguien le importa explicar por qué querría excluir la carpeta de paquetes? ¿No tiene sentido incluir los paquetes para que el servidor de compilación tenga las dependencias?

    – Joel Martínez

    3 de enero de 2012 a las 2:51

  • Vale la pena señalar que el equipo de NuGet implementó la característica de ‘restauración del paquete’ exactamente para este problema. Hay una documento en el sitio de NuGet que explica la función y describe cómo usarla en Visual Studio.

    – ajk

    6 de marzo de 2012 a las 19:54


  • Si ignora los paquetes y usa la restauración de paquetes nuget, es útil permitir nuget.exe. Cuando alguien descarga, esto le dice a VS que la función se ha habilitado para la solución: !NuGet.exe <- no ignore este archivo.

    – danludwig

    25 de junio de 2012 a las 18:45

  • Para aquellos de ustedes que usan AppHarbor, vale la pena señalar que excluir la carpeta de paquetes hará que su compilación falle en la implementación 🙂

    – Joel Martínez

    1 de julio de 2012 a las 3:56

Entiendo que esta es una vieja pregunta, todavía compartiendo una información. En Visual Studio 2017, puede hacer clic derecho en el archivo de solución y seleccionar Agregar solución al control de código fuente

ingrese la descripción de la imagen aquí

Esto agregará dos archivos a su carpeta de origen.

  1. .gitattributes
  2. .gitignore

Esta es la manera más fácil.

  • ¿A alguien le importa explicar por qué querría excluir la carpeta de paquetes? ¿No tiene sentido incluir los paquetes para que el servidor de compilación tenga las dependencias?

    – Joel Martínez

    3 de enero de 2012 a las 2:51

  • Vale la pena señalar que el equipo de NuGet implementó la característica de ‘restauración del paquete’ exactamente para este problema. Hay una documento en el sitio de NuGet que explica la función y describe cómo usarla en Visual Studio.

    – ajk

    6 de marzo de 2012 a las 19:54


  • Si ignora los paquetes y usa la restauración de paquetes nuget, es útil permitir nuget.exe. Cuando alguien descarga, esto le dice a VS que la función se ha habilitado para la solución: !NuGet.exe <- no ignore este archivo.

    – danludwig

    25 de junio de 2012 a las 18:45

  • Para aquellos de ustedes que usan AppHarbor, vale la pena señalar que excluir la carpeta de paquetes hará que su compilación falle en la implementación 🙂

    – Joel Martínez

    1 de julio de 2012 a las 3:56

Prefiero excluir cosas según sea necesario. No desea excluir todo lo que tenga la cadena “bin” u “obj” en el nombre. Por lo menos asegúrese de seguirlos con una barra oblicua.

Esto es con lo que empiezo en un proyecto VS2010:

bin/
obj/
*.suo
*.user

Y solo porque uso ReSharper, también esto:

_ReSharper*

  • Estar de acuerdo. Además, esto va para “depuración”. Agregue la barra diagonal final a esto para evitar ignorar archivos con depuración en el nombre.

    – John Korsnes

    8 de julio de 2014 a las 13:27

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad