2009-10-12 8 views
1

Je suis actuellement en train de développer une grande application. Pour l'instant, j'ai une solution (cela peut changer dans le temps) avec de nombreux projets.Solution moyenne/grande - Processus Visual Studio Build - Conseil requis

J'ai mis en place la structure de répertoire:

\ lib \ (CONTIENT partagé composants 3ème partie) build \ build \ bin (répertoire de sortie) build \ wwwroot (répertoire de sortie pour application web) config \) src \ (contient les dossiers pour les projets ci-dessous)

Sur chacun des projets, j'ai définir l'emplacement de construction (répertoire de sortie) ".. \ build \ bin \" Ceci, comme illustré ci-dessus, fait construire les projets dans build \ bin, au dessus du répertoire src. Sur

Company.Entities Références Company.Common Cela a tous les objets métier (client, commande, produit) etc ....

Company.Common Contient des classes qui format chaînes, dates, accès au fichier etc .... Ne contient aucune référence à un autre de la Société. bibliothèques.

Company.Data Références 3ème partie lib (château de Windsor par exemple) Il contient des interfaces comme IRepository, ICustomerRepository, IOrderRepository etc .... A classe RepositoryFactory - ce qui a une méthode appelée « Get () "qui utilise Ioc (Castle Windsor) pour renvoyer le contient également IoC pour résoudre les implémentations en cours de ces dépôts. Castle.config se trouve dans le répertoire \ config \ et inclus "en tant que lien" dans ce projet. Je l'ai mis à copier toujours dans le répertoire de sortie

Company.Data.LinqToSql Références Company.Data Ceci est la bibliothèque d'accès aux données en cours. Il est instancié par IoC

Company.Logic Références à Company.Data de couche logique métier - a des méthodes comme GetProductById (string id) - à son tour, appelle Repository.Get() GetById (id). - par exemple

Company.Tests Explicite ... fera davantage usage de ceci dans le futur.

Company.Web Références Company.Logic, Company.Entities, Company.Common de couche d'interface utilisateur Web - c'est le site principal.

Ok, j'espère que cela vous donne un peu de contexte dans l'architecture actuelle de mes projets etc ...

Actuellement, je construis tout dans le répertoire build/bin, à l'exception de Company.Web, qui construit dans build/wwwroot (ceci ajoute un répertoire bin) J'ai alors un événement post-build qui copie pages aspx, feuilles de style, images, fichiers js etc .... depuis l'emplacement src/Company.Web pour construire/wwwroot J'ai configuré Visual Studio pour utiliser IIS pour le débogage, et configurer un répertoire virtuel iis pour pointer vers mon dossier build/wwwroot.

Cependant ... Certains fichiers requis ne sont pas intégrés dans le répertoire wwwroot/bin tel que - Company.Data.LinqToSql - puisque ce n'est pas référencé par proejcts, mais instancié à l'aide IoC

Comment J'améliore ma structure de processus/projet de construction pour m'aider dans mon développement? Je vais "relever" toutes les suggestions judicieuses.

Répondre

1

Une chose qui saute est la copie des fichiers de sortie pour construire/bin. Avez-vous des sous-dossiers séparés pour les versions Release et Debug? J'ai travaillé sur un grand projet qui utilisait une configuration similaire à la vôtre, et nous rencontrions fréquemment des problèmes où quelqu'un passait d'une construction à l'autre, mais tous les fichiers n'étaient pas nécessairement reconstruits (pour une raison ou une autre). répertoire contenait souvent un mélange de fichiers des deux versions. En ce qui concerne les événements postérieurs à la construction, j'essaie de les éviter car ils ont tendance à être difficiles à localiser lorsque vous devez les modifier plus tard. Ils s'avèrent également gênants lorsque vous avez besoin d'un comportement différent sur une machine de développement par rapport à un serveur de construction. Au lieu de cela, je crée généralement un fichier .bat ou un script MSBuild pour gérer la copie de fichiers, le zipping, etc.

Sinon, il semble que vous ayez une structure et un processus corrects. Tout au long du projet, vous risquez de rencontrer des problèmes, de la confusion, etc. Assurez-vous d'en prendre note en tant qu'éléments potentiels à modifier ou à considérer lors de futurs projets.

Questions connexes