J'ai récemment commencé à travailler sur divers projets C # dans Visual Studio dans le cadre d'un plan pour un système à grande échelle qui sera utilisé pour remplacer notre système actuel qui est construit à partir d'un mélange de divers programmes et scripts écrits en C et Perl. Les projets sur lesquels je travaille maintenant ont atteint une masse critique pour s'engager dans Subversion. Je me demandais ce qui devait et ne devait pas être validé dans le référentiel pour les projets Visual Studio. Je sais que cela va générer divers fichiers qui ne sont que des build-artefacts et n'ont pas vraiment besoin d'être validés, et je me demandais si quelqu'un avait des conseils pour utiliser correctement SVN avec Visual Studio. Pour le moment, j'utilise un serveur SVN 1.6 avec Visual Studio 2010 beta. Tout conseil, avis sont les bienvenus.
Vous pouvez ajouter les fichiers suivants au contrôle de code source de Visual Studio:
- Fichiers de solution (
*.sln
).- Fichiers de projet, par exemple,
*.csproj
,*.vbproj
des dossiers.- Fichiers de configuration d'application, basés sur XML, utilisés pour contrôler le comportement au moment de l'exécution d'un projet Visual Studio.
Les fichiers que vous ne pouvez pas ajouter au contrôle de code source sont les suivants:
- Fichiers d'options utilisateur de la solution (
*.suo
).- Fichiers d'options utilisateur du projet, par exemple,
*.csproj.user
,*.vbproj.user
des dossiers.- Fichiers d'informations Web, par exemple,
*.csproj.webinfo
,*.vbproj.webinfo
, qui contrôle l'emplacement racine virtuel d'un projet Web.- Créez des fichiers de sortie, par exemple,
*.dll
et*.exe
des dossiers.
Je suggère d'utiliser AnkhSVN - un plugin de contrôle de source Subversion pour Visual Studio 2008/2010.
Vous pouvez l'utiliser pour effectuer votre ajout et validation initiaux de la solution, des projets et des sources dans le référentiel et il n'ajoutera aucun des artefacts de génération. Il n'ajoutera rien généré par votre build, uniquement les fichiers référencés par votre solution. S'il y a d'autres morceaux dont vous avez besoin qui ne sont pas dans votre solution, vous pouvez les ajouter par la suite.
Mettez les fichiers suivants dans le contrôle de version:
Ne pas mettre les fichiers suivants en contrôle de version:
En outre, ne placez aucun fichier objet, exécutable, fichier généré automatiquement (comme les en-têtes qui pourraient être générés).
Comme pour les exécutables et autres fichiers générés - il peut y avoir une exception si vous voulez pouvoir archiver les versions. Cela pourrait être une bonne idée, mais vous voudrez probablement gérer cela un peu différemment et éventuellement à un endroit différent de votre code source. Si vous faites cela, archivez également vos fichiers .pdb afin de pouvoir déboguer plus tard. vous souhaiterez peut-être utiliser un serveur de symboles pour stocker vos symboles archivés (voir Outils de débogage pour Windows pour le serveur de symboles et sa documentation).
Voici ma liste de fichiers spécifiques à VS que j'exclus de SVN:
Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
Niveau de solution:
.sln
fichier de solution.suo
fichier d'options utilisateur de la solutionNiveau projet:
.csproj
, .vbproj
(et c ++ proj?) fichiers.csproj.user
, .vbproj.user
des dossiersbin
obj
Si vous utilisez des compléments VS, ils peuvent générer des fichiers qui doivent également être ignorés (par exemple, ReSharper génère .resharper
et .resharper.user
des dossiers).
Les éléments ignorés peuvent être ignorés explicitement par nom de fichier (c'est-à-dire. MyProject.csproj
), ou par un caractère générique (par exemple. *.csproj.user
).
Une fois que vous avez configuré vos ignorés, vérifier une copie propre de votre source, puis la construction ne doit alors afficher aucune modification (c'est-à-dire aucun nouveau fichier non versionné).
Je voudrais inclure manuellement tous les fichiers que je pense que je ne devrais pas contrôler la version.
Mon modèle global d'ignorance est:
.dll .pdb .exe .cache .webinfo .snk bin obj debug _Resharper .user resharper
Dans le cas où vous utilisez ignorer la liste, SVN est sensible à la casse. N'oubliez donc pas d'ignorer les dossiers bin et Bin séparément.
De plus, j'avais une question .. pourquoi faut-il beaucoup de temps pour actualiser l'icône d'état? Parfois, cela devient très déroutant.
Voir Mercurial .hgignore pour les projets Visual Studio 2008 pour une liste d'ignorance Mercurial. Je ne connais pas la syntaxe de la liste d'ignorance SVN, mais ce fil a quelques bonnes listes de ce qu'il faut ignorer dans Visual Studio.