En tant que société ISV, nous nous heurtons lentement à la question de «structurer votre code». Nous développons principalement en utilisant Visual Studio 2008 et 2010 RC. Langues C# et vb.net. Nous avons notre propre Team Foundation Server et bien sûr nous utilisons le contrôle de la source. Lorsque nous avons commencé à développer sur la base du .NET Framework, nous avons également commencé à utiliser Namespaces de manière primitive. Avec le temps nous sommes devenus plus matures, je veux dire que nous avons appris à utiliser les espaces de noms et nous avons structuré le code de plus en plus, mais seulement dans la portée de la solution. Nous avons maintenant environ 100 projets et solutions différents dans notre Source Safe. Nous avons réalisé que beaucoup de nos propres classes sont codées très redondantes, je veux dire, un Write2Log, GetExtensionFromFilename ou une fonction similaire peut être trouvé entre une et 20 fois dans tous ces projets et solutions.Espaces de noms associés à l'explication du contrôle TFS/Source
Donc, mon idée est:
Création d'un seul type de dossier racine dans le contrôle source et démarrer une structure propre hiérarchie-namespace ci-dessous de cette racine, Appelons-CompanyName. Une classe Write2Log serait alors trouvée dans CompanyName.System.Logging. Chaque fois que nous créons une nouvelle solution ou un nouveau projet et que nous avons besoin d'une fonction de journalisation, nous nommons cette solution et la plaçons en conséquence sous le dossier racine de CompanyName. Pour avoir la fonctionnalité de journalisation, nous importons (ajoutons) le projet existant dans la solution . Ces 20 projets/solutions avec la classe write2log peuvent ensuite être conservés en un seul endroit.
À mes questions: - est-ce une bonne idée, la philosophie des espaces de noms et le contrôle de la source? - Il doit y avoir un bon livre expliquant les espaces de noms combinés avec le contrôle de la source, oui? des astuces/conseils/astuces? - Comment gérez-vous vos 50+ projets?
(BTW): le code du framework est dans des assemblys distincts, donc quand MyProduct fait référence à quelque chose dans le framework, c'est à travers les références du projet dans notre solution. – JMarsch
d'abord, merci beaucoup, JMarsch. nous n'avons jamais utilisé la fonctionnalité de branchement, mais nous allons jeter un coup d'oeil à celui-ci à coup sûr. Ensuite, je vais essayer de configurer un environnement qui correspond exactement à votre description. Je vais poster mes résultats ici .. dès qu'il y en a .. –
Content de vous aider! Nous utilisons également des branches supplémentaires: nous pouvons créer une version 1.1, 2.0, etc. pour permettre le développement de la version suivante tout en conservant la version d'expédition (la version 1.1 obtiendrait une nouvelle branche, mais la version 1.0.1 est simplement fusionnée de la branche v1.0). Nous créons également une branche \ Archives (au même niveau que Main), où nous gardons une copie figée de toutes les releases et jalons (betas, release 1.0.1, release 1.0.2, etc) qui nous permet de recréer exactement le code comme pour toutes les versions que nous avons envoyées. – JMarsch