1310 votes

.gitignore pour les projets et solutions Visual Studio

Quels fichiers dois-je inclure dans .gitignore lors de l'utilisation de Git en conjonction avec les Solutions Visual Studio (.sln) et Projets ?

3 votes

0 votes

Il y a également un sujet sur ce sujet pour Hg : stackoverflow.com/questions/34784/…. Je ne sais pas si cette configuration est directement transférable à git cependant.

13 votes

Je ferais attention à ignorer les fichiers .exe et .pdb, vous pourriez involontairement ignorer les outils que vous stockez avec votre source (nant, nunit gui, etc...).

711voto

Chronial Points 15402

Découvrez le "Collection de modèles utiles .gitignore" officiel de GitHub.

Le fichier .gitignore pour Visual Studio se trouve ici:
https://github.com/github/gitignore/blob/main/VisualStudio.gitignore

14 votes

Veuillez noter. Ce fichier contient une entrée pour ignorer les fichiers publiés. Cependant, la façon dont la règle est écrite, elle ignorera tout dossier que vous avez appelé "Publier", et ignorera donc tout ce que vous avez en dessous. Il ne vise pas spécifiquement la sortie de publication de Visual Studio "Publishing". Il l'ignore, mais aussi d'autres choses.

7 votes

@starfighterxyz si vous pensez qu'il y a un bug dans le gitignore, je vous recommanderais de créer une demande de pull.

14 votes

Eh bien, je ne sais pas (assez?) Pour dire que c'est un bogue. Il se trouve simplement que j'utilise Publish/ comme nom de contrôleur et comme noms de dossier de projet. Je pense que c'est juste un cas particulier. Juste quelque chose pour vous faire gagner quelques heures de votre vie :)

299voto

Martin Points 7515

Il existe un outil en ligne qui vous permet de générer un fichier .gitignore en fonction de votre OS, IDE, langage, etc. Jetez un œil à http://www.gitignore.io/.

entrez la description de l'image ici

Le 20/08/2014, voici le fichier généré pour Visual Studio + Windows.

# Créé par http://www.gitignore.io

### VisualStudio ###
## Ignorer les fichiers temporaires de Visual Studio, les résultats de construction, et
## les fichiers générés par des modules complémentaires populaires de Visual Studio.

# Fichiers spécifiques à l'utilisateur 
*.suo
*.user
*.sln.docstates

# Résultats de construction
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/

# Répertoires cache Roslyn
*.ide/

# Résultats des tests MSTest
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

#NUNIT
*.VisualState.xml
TestResult.xml

# Résultats de construction d'un projet ATL
[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

# Fichiers de test Chutzpah
_Chutzpah*

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

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

# Espace de travail local TFS 2012
$tf/

# Kit d'automatisation des directives
*.gpState

# ReSharper est un module complémentaire de codage .NET
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode est un module complémentaire de codage .NET
.JustCode

# TeamCity est un module complémentaire de construction
_TeamCity*

# DotCover est un outil de couverture de code
*.dotCover

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

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Dossier de sortie Installshield
[Ee]xpress/

# DocProject est un module complémentaire de génération de documentation
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Dossier Click-Once
publish/

# Publier la sortie Web 
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Commentez la ligne suivante si vous souhaitez vérifier vos paramètres de déploiement web
# mais les chaînes de connexion de base de données (avec des mots de passe potentiels) ne seront pas cryptées
*.pubxml
*.publishproj

# Paquets NuGet
*.nupkg
# Le dossier des paquets peut être ignoré en raison de la restauration des paquets
**/packages/*
# sauf build/, qui est utilisé comme cible MSBuild.
!**/packages/build/
# Si vous utilisez l'ancienne Restauration de paquets intégrée à MSBuild, décommentez ceci :
#!**/packages/repositories.config

# Sortie de construction Azure Windows
csx/
*.build.csdef

# Dossier de package d'application Windows Store
AppPackages/

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

# Projets RIA/Silverlight
Generated_Code/

# Fichiers de sauvegarde et de rapport de la conversion d'un ancien fichier de projet
# vers une version plus récente de Visual Studio. Les fichiers de sauvegarde ne sont pas nécessaires,
# parce que nous avons git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# Fichiers SQL Server
*.mdf
*.ldf

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

# Microsoft Fakes
FakesAssemblies/

### Windows ###
# Caches de fichiers image Windows
Thumbs.db
ehthumbs.db

# Fichier de configuration du dossier
Desktop.ini

# Corbeille utilisée sur les partages de fichiers
$RECYCLE.BIN/

# Fichiers d'installation de Windows
*.cab
*.msi
*.msm
*.msp

0 votes

Idéalement, cela inclurait une licence à l'intérieur du fichier. (Idéalement, ce serait une licence qui ne soulèverait aucune question dans un environnement d'entreprise.)

0 votes

Aussi, cela devrait avoir .vs/, voir ici: stackoverflow.com/a/31879242/1143274

0 votes

@EvgeniSergeev exécutant l'outil en 2023 produit également l'option .vs/

121voto

Lachlan Roche Points 16456

J'utilise le .gitignore suivant pour les projets C#. Des modèles supplémentaires sont ajoutés au fur et à mesure de leur besoin.

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

2 votes

Désaccord avec *.resharper. Les fichiers correspondant à *.ReSharper.user devraient être ignorés, mais cela est pris en compte par la règle *.user ci-dessus.

2 votes

@DrewNoakes : Quels sont les fichiers ReSharper que vous pensez devraient être contrôlés par révision?

5 votes

@PerLundberg Une raison à considérer est que vous pouvez configurer des options de formatage de projet standard, etc, et enregistrer les fichiers de configuration avec le projet. Si cela se trouve dans git, cela facilite la tâche à tous ceux qui utilisent Resharper pour garder le projet formaté de manière cohérente.

46voto

Mobiletainment Points 4326

Pour ceux qui sont intéressés par ce que pense Microsoft devrait être inclus dans le gitignore, voici celui par défaut que Visual Studio 2013 RTM génère automatiquement lors de la création d'un nouveau référentiel Git:

## Ignorer les fichiers temporaires, les résultats de construction et
## les fichiers générés par des modules complémentaires populaires de Visual Studio.

# Fichiers spécifiques à l'utilisateur
*.suo
*.user
*.sln.docstates

# Résultats de construction

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

# Activer le dossier "build/" dans le dossier NuGet Packages puisque les packages NuGet l'utilisent pour les cibles MSBuild
!packages/*/build/

# Résultats de test MSTest
[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

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

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

# Toolkit de guidance Automation
*.gpState

# ReSharper est un module complémentaire de codage .NET
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity est un module complémentaire de construction
_TeamCity*

# DotCover est un outil de couverture de code
*.dotCover

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

# Dossier de sortie Installshield
[Ee]xpress/

# DocProject est un module complémentaire de génération de documentation
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Répertoire Click-Once
publish/

# Output de publication Web
*.Publish.xml

# Répertoire des packages NuGet
## TODO: Si vous avez activé la restauration des packages NuGet, décommentez la ligne suivante
#packages/

# Output de construction Windows Azure
csx
*.build.csdef

# Répertoire des packages d'applications Windows Store
AppPackages/

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

# Projets RIA/Silverlight
Generated_Code/

# Fichiers de sauvegarde et de rapport de conversion d'un ancien fichier projet vers une version plus récente de Visual Studio. Les fichiers de sauvegarde ne sont pas nécessaires, car nous avons git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

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

# Fichiers générés LightSwitch
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml

# =========================
# Détritus Windows
# =========================

# Caches de fichiers image Windows
Thumbs.db
ehthumbs.db

# Fichier de configuration du dossier
Desktop.ini

# Corbeille utilisée sur les partages de fichiers
$RECYCLE.BIN/

# Fichiers de stockage de service de bureau Mac
.DS_Store

Voir : Ajouter un fichier .gitignore par défaut sur MSDN

37voto

sgriffinusa Points 3136

Alors que vous devriez conserver votre fichier packages.config NuGet, vous devriez exclure le dossier packages :

#NuGet
packages/

En général, je ne stocke pas les binaires, ou quoi que ce soit généré à partir de mon code source, dans le contrôle de source. Cependant, il existe des opinions divergentes à ce sujet. Si cela facilite les choses pour votre système de build, faites-le ! Je soutiendrais cependant que vous ne versionnez pas ces dépendances, donc elles prendront juste de la place dans votre dépôt. Stocker les binaires dans un emplacement central, puis compter sur le fichier packages.config pour indiquer la version nécessaire est une meilleure solution, à mon avis.

4 votes

Est-ce que quelqu'un pourrait expliquer pourquoi vous voudriez exclure le dossier des packages? Est-ce que cela ne serait pas logique d'inclure les packages pour que le serveur de construction ait les dépendances?

15 votes

Il convient de noter que l'équipe NuGet a implémenté la fonction de 'restauration des packages' pour exactement ce problème. Il y a un document sur le site NuGet qui explique la fonctionnalité et décrit comment l'utiliser dans Visual Studio.

4 votes

Si vous ignorez les packages et utilisez la restauration de package NuGet, il est utile d'autoriser nuget.exe. Lorsque quelqu'un télécharge, cela aide VS à indiquer que la fonctionnalité a été activée pour la solution : !NuGet.exe <- ne pas ignorer ce fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X