Plantilla .gitignore de .NET explicada
Explica por qué Dotnet.gitignore ignora bin y obj, Debug y Release, los paquetes NuGet, los registros binarios de MSBuild, los resultados de pruebas y .env, y en qué se diferencia de la plantilla VisualStudio.
Dotnet.gitignore es una plantilla concisa para proyectos de estilo SDK de .NET (proyectos C# y F# creados con dotnet new). Como indica el comentario de cabecera de la plantilla, si usas Visual Studio conviene usar también la plantilla VisualStudio, que tiene muchas más reglas relacionadas con el IDE.
Si desarrollas con VS Code, Rider o la línea de comandos, esta plantilla por sí sola bloquea la mayor parte de los resultados de compilación y subproductos de herramientas.
Explicación regla por regla
| Patrón | Qué ignora y por qué |
|---|---|
[Bb]in/[Oo]bj/[Dd]ebug/[Rr]elease/x64/x86/bld/ | Salida de compilaciónSon los ensamblados y archivos intermedios (obj/project.assets.json, etc.) que genera dotnet build. Los corchetes capturan diferencias de mayúsculas como Bin y bin. |
artifacts/project.lock.jsonproject.fragment.lock.json | Artefactos de .NETartifacts/ es la carpeta del diseño de salida unificado disponible desde .NET 8, y project.lock.json es el resultado de restauración de la antigua época de project.json. |
*.nupkg*.snupkg | Paquetes NuGetSon los paquetes y paquetes de símbolos creados con dotnet pack. Son artefactos que se publican en un feed de NuGet. |
*.binlog[Tt]est[Rr]esult*/[Bb]uild[Ll]og.*TestResult.xmlnunit-*.xmlCodeCoverage/ | Registros y resultados de pruebasSon los registros binarios de MSBuild (opción -bl) y los resultados de pruebas y cobertura. Los registros binarios pueden contener valores sensibles como variables de entorno, así que hay que tener cuidado al compartirlos. |
.env~$**~ | Archivos de entorno y temporalesSon el archivo de variables de entorno, el archivo de bloqueo que aparece al abrir documentos de Office (~$documento.docx) y los archivos de copia de seguridad del editor. |
Precauciones en la práctica
- La regla
[Ll]og/ignora las carpetasloga cualquier profundidad. Si una carpeta de espacio de nombres del código se llamaLog, añade una regla de excepción. packages.lock.json(el archivo de bloqueo de NuGet) no se ignora. Si usas el modo de bloqueo, confírmalo.- Si guardas los secretos de usuario fuera del proyecto (en el perfil del usuario) con
dotnet user-secrets, no tienes que preocuparte por gitignore.
Plantilla original
## A streamlined .gitignore for modern .NET projects## including temporary files, build results, and## files generated by popular .NET tools. If you are## developing with Visual Studio, the VS .gitignore## https://github.com/github/gitignore/blob/main/VisualStudio.gitignore## has more thorough IDE-specific entries.#### Get latest from https://github.com/github/gitignore/blob/main/Dotnet.gitignore# Build results[Dd]ebug/[Dd]ebugPublic/[Rr]elease/[Rr]eleases/x64/x86/[Ww][Ii][Nn]32/[Aa][Rr][Mm]/[Aa][Rr][Mm]64/bld/[Bb]in/[Oo]bj/[Ll]og/[Ll]ogs/# .NET Coreproject.lock.jsonproject.fragment.lock.jsonartifacts/# ASP.NET ScaffoldingScaffoldingReadMe.txt# NuGet Packages*.nupkg# NuGet Symbol Packages*.snupkg# dotenv environment variables file.env# Others~$**~CodeCoverage/# MSBuild Binary and Structured Log*.binlog# MSTest test Results[Tt]est[Rr]esult*/[Bb]uild[Ll]og.*# NUnit*.VisualState.xmlTestResult.xmlnunit-*.xml
Origen de las plantillas: github/gitignore/Dotnet.gitignore @356fd7b (2026-09-11) · CC0-1.0