Je travaille actuellement sur un projet ASP.NET avec plusieurs développeurs utilisant Subversion pour la distribution de code, mais il est franchement totalement raté pour le moment. La personne qui a configuré le dépôt Subversion a inclus des fichiers de configuration spécifiques à son ordinateur, des répertoires bin \ * et d'autres choses de ce genre. Moi, étant le gars qui doit vérifier ce référentiel et le faire fonctionner sur mon ordinateur, je suis assez frustré par cela car il m'a fallu du temps pour le trier du tout pour le compiler du tout. Maintenant, je pense à écrire un document pour les directives de Subversion à envoyer au responsable technique de mon entreprise afin que nous puissions normaliser le processus et éviter ce genre de problèmes.Meilleures pratiques pour stocker un site Web ASP.NET dans Subversion?
Ce que je cherche, c'est d'entrer les lignes directrices. Voici le début pour eux, et nous espérons que nous pouvons faire quelque chose de bien de celui-ci:
La structure du fichier doit être mis en place pour avoir des bibliothèques tierces vérifiées dans l'extérieur des répertoires de sortie de construction (car ils ne seront pas inclus dans le référentiel.) Le nom de ce répertoire doit être "Bibliothèques".
Aucun fichier spécifique à l'ordinateur ne doit être inclus dans Subversion. Par conséquent, seul un modèle de Web.config est archivé, ce qui est personnalisé par les développeurs en fonction de leur machine. Ce comportement est inclus dans Visual Studio 2010 par défaut et les fichiers de configuration individuels (
Web.Local.config
) ont automatiquement le modèle (Web.config
) appliqué. Le fichier de configuration local ne doit toujours pas être inclus dans Subversion, à condition qu'il s'applique à une machine spécifique. Les fichiers de solution et de projet ne doivent contenir aucun chemin absolu.Une liste d'ignorés doit être configurée. Commencez par:
' *.user obj '
Exemple de structure de fichier pour un site Web ASP.NET 2.0 avec une bibliothèque de classe spécifique au site Web et une bibliothèque tiers:
' /trunk/ Libraries/ ThirdParty.dll MyClassLibrary/ bin/ [Ignore] obj/ [Ignore] Properties/ AssemblyInfo.cs SomeClass.cs MyClassLibrary.csproj - Holds references to third-party libraries. For example: ../Libraries/ThirdParty.dll MyWebApplication/ bin/ ThirdParty.dll [Ignore; copied by build process] ThirdParty.dll.refresh - Contains "../Libraries/ThirdParty.dll" Default.aspx Default.aspx.cs Web.config [Ignore] Web.config.template MySolution.sln - Holds list of projects. - Has reference information for projects. '
Une alternative à l'utilisation
Web.config.template
serait être d'inclure un fichierLocal.config
deWeb.config
, mais cela pourrait être moins flexible. Lors de l'utilisation d'un projet d'application Web plutôt que d'un projet de site Web, les références seront stockées dans le fichier de projet au lieu de dans les fichiers .refresh, de sorte que le bin/dossier sera ignoré.
Quelqu'un peut-il voir des erreurs dans les suggestions ci-dessus? Quelque chose manque? Quelqu'un at-il des suggestions pour la liste des ignorés? Je viens de commencer avec quelques entrées pour le moment.
Pour 2.0 projets Web références de montage externes sont déterminées par le/bin/seul , donc j'ai besoin (AFAIK) les fichiers .refresh d'être dans le répertoire/bin /. Il est possible de faire en sorte que SVN ignore bin/*. Dll, cela ne devrait donc pas poser de problème. Mon intention était de ne jamais inclure la sortie de construction dans SVN, c'est exactement ce que ces directives sont censées empêcher. En fait, j'ai écrit mes instructions pour importer un fichier "Local.config" au début, mais comme il y a tellement de sections dans un fichier de configuration j'ai pensé qu'il serait peut-être mieux d'avoir une copie du fichier configurable par le développeur . – Blixt
Ahhh - J'ai oublié les projets 2.0 "site web" sans un fichier de projet. Je ne les ai jamais aimés. Mais vous avez le choix (l'application web a été réintroduite dans VS2005 SP1). Si vous créez un "site Web", vous n'avez aucun fichier de projet, et le répertoire bin devient vos références, ou vous pouvez créer une "application web" où les références sont définies par un fichier de projet, et vous pouvez alors ignorer toute la corbeille dossier. Mais je n'ai pas beaucoup d'expérience avec un projet "site web" dans svn. – Pete
Pete, vous pouvez également placer vos chaînes de connexion dans un fichier de configuration séparé (sauf si vous utilisez encore .NET 1.1). Utilisez simplement '. –