2009-09-04 5 views
5

background: Moi et mes collègues travaillent sur le projet asp.net mvc ... nous avons un ordinateur qui fonctionne comme un serveur où le projet sera stocké sur ... chacun de nous a une copie du projet et nous avons installé des cvs de tortue. questions: quand vous voulez commettre quelque chose, quels fichiers commettez-vous exactement? .. asp.net rapporte de nombreux fichiers dll, csproj, cs et sln qui semblent être différents de ceux du serveur.Quels fichiers de projet ASP.NET MVC doivent être conservés dans un référentiel?

Peut-être que ma question n'est pas la bonne que je devrais demander alors j'apprécierais un peu de perspicacité sur quelle est la meilleure approche pour travailler dans les groupes.

Répondre

4

Le fichier csproj de base doit être à chaque fois que vous ajoutez engage ou supprimer des choses du projet, afin d'assurer que le projet a tous les fichiers corrects. La solution (sln) est une bonne chose à commettre, pour la même raison, même si je l'ai vu aussi sans. Vous voudriez également commettre n'importe quels dossiers de cs, naturellement, car ils sont l'objet principal des choses.

Les fichiers DLL ne doivent être validés que s'ils sont en dehors de références - les DLL internes à votre projet peuvent être ignorées, car elles seront construites par chaque ordinateur à son tour. Vous souhaitez également éviter les fichiers .user inutiles. Ignorez les dossiers 'bin' et 'obj' pour chaque répertoire, quand il s'agit de valider également.

1

Vous ne devriez vraiment pas enregistrer tout ce que le projet peut générer lui-même. Donc, pas besoin de vérifier dans vos dossiers bin ou obj ou quelque chose comme ça, vous voulez également ignorer les fichiers de préférences de l'utilisateur. Ceci inclut les dlls, à moins que ce ne soit ils sont des DLL tierces, alors vous voulez les vérifier pour vous assurer que tout le monde travaille avec la même version et ainsi vous ne devez pas continuer à changer les chemins de référence.

+0

Nous utilisons un dossier Lib dans la solution et référençons les DLL tierces à partir de là. Exclure BIN/OBJ est la voie à suivre :) Nous avons des DLLs MVC là aussi comme nous l'avons utilisé depuis l'aperçu. Cela rend les mises à niveau plus faciles. –

0

Nous conservons tout sauf les dossiers BIN/OBJ dans SVN. Nous avons toutes les bibliothèques tierces dans un dossier distinct dont elles sont référencées.

Bonté,

Dan

1

Je ne travaille pas sur asp.net, donc je vais répondre de manière générique. Nous avons un dépôt de code subversion pour notre système de version, cvs fonctionne bien aussi. Les développeurs récupèrent tous les codes mis à jour depuis le référentiel, fonctionnent, vérifient que le code fonctionne correctement, en font un autre, recompilent, testent, puis transmettent les modifications de code source au référentiel. Sur une base régulière, vous pouvez avoir un outil ou construire manuellement l'application à partir du référentiel, puis la déployer sur un serveur de test. Aucun code compilé ne doit être placé dans le référentiel.

-Jay

1

Nous utilisons la structure du projet suivant dans SVN (mais cela s'applique à CVS aussi).

+ tags 
+ branches 
> trunk 
    + build (build scripts) 
    + lib (external libraries) 
    > src (source code)  
    >> Organization.App (solution name) 
    >> Organization.App.Core (code library) 
     + Config 
     > Domain 
      > Model 
      > Persistence 
      > Queries 
      > Services 
     > Persistence 
     > Services 
    >> Organization.App.Web (mvc web app) 
     > Assets 
      + Images 
      + Scripts 
      + Stylesheets 
     + Controllers 
     + Views 
     + ViewModels 

Nous mettons toutes nos dépendances tierces dans le dossier lib. Y compris MVC, qui peut être déployé bin. See this article by Phil Haack. Donc, quand un nouveau développeur vient en ligne tout ce qu'ils ont à faire, vérifiez le coffre, et ils devraient avoir tout ce dont ils ont besoin pour démarrer. L'utilisation d'un serveur CI est un jeu d'enfant car toutes les dépendances de projets sont encapsulées par le dossier lib et tous les projets de studio visuel font référence à ces DLL dans ce dossier lib.

Est-ce que cela a du sens?

Ne vous occupez pas du dossier principal et du dossier Web. C'est ainsi que nous structurons nos projets au sein de la solution. Mais c'est un whole other conversation. :)

+1

Eloquent et précis! Bonne réponse !! –

+0

* Les services Pssst sont des couches d'application! (ou couche de domaine mais je vois que vous n'avez pas de couche d'application) * – Worthy7

0

Si vous utilisez un outil de gestion des modifications de base de données, tel que Tarantino, vous souhaiterez également vérifier les scripts de modification SQL et/ou remplir les scripts. Nous avons un dossier dans notre solution 'Core' où nous les conservons, c'est-à-dire 'Core/Database/Updates'. Nous utilisons SQL Compare pour trouver les changements dans notre base de données, puis nous vérifions ces scripts de changement SQL afin que les autres développeurs puissent simplement les exécuter localement. Nous avons une configuration de tâche nant pour appeler Tarantino afin de synchroniser les autres environnements de construction (Dev, QA) et exécuter de nouveaux scripts de modification.

Questions connexes