2009-04-14 10 views
1

Je travaille sur un processus automatisé pour créer une application de base afin d'inclure des bibliothèques et des projets communs, de tout vérifier dans le contrôle source et de configurer la base de la solution. La plupart des problèmes que j'ai résolus sauf un. Est-il possible d'intercepter le chemin donné par l'utilisateur pour la solution et les projets et modifier ce chemin?Visual Studio - Intercepter et modifier le chemin de création pour les solutions et les projets

En d'autres termes.

l'utilisateur donne C:/Projects/App1 sur l'écran créer un nouveau projet. la solution et les projets sont réellement stockés dans C:/Projects/App1/trunk/source/App1

Je veux changer le chemin pour faciliter la configuration de notre TFS pour les builds continus. J'ai résolu la plupart des autres problèmes sauf celui-ci et il semble que ce devrait être le plus simple. J'ai essayé de voir si je pouvais le changer dans ma classe IWizard mais jusqu'ici, pas de chance. Toutes les suggestions seraient grandement appréciées.

Je dois ajouter que ce processus est déclenché par l'utilisateur qui sélectionne un modèle personnalisé. S'il n'y a pas de réponse à l'aide d'un modèle personnalisé, je vais passer à un complément VS.

-Scott

+0

Je ne connais aucun moyen de le faire, mais je vais vous dire que vous allez énerver beaucoup de développeurs si vous avez du succès. La plupart des développeurs que je connais sont très pointilleux sur la façon dont ils aiment organiser leur code, et aucun d'eux n'est identique. Est-ce que TFS ne supporte pas les différents répertoires de travail? – Todd

+0

Oui TFS prend en charge différents répertoires de travail. Le problème vient du référencement de projets externes, de la limite de 260 caractères, etc ... Toutes sortes de problèmes introduits avec des builds automatisés. Si différents développeurs mettent en place différentes manières, ils peuvent casser (vont) casser la construction continue. – Bomlin

Répondre

0

Je ne sais pas ce que vous faites, mais quelque chose comme cela est possible avec des modèles de projet. Je ne sais pas si cela s'applique dans votre cas.

Ajouté: Quelque chose comme ceci:

<TemplateContent> 
    <Project> 
     <Folder> 
      <Folder> 
       <ProjectItem></ProjectItem 
      </Folder> 
     </Folder> 
    </Project> 
</TemplateContent> 
+0

J'ai modifié mon post pour avoir un peu plus de détails. J'utilise un modèle personnalisé qui utilise une classe personnalisée qui implémente IWizard. Je peux faire d'autres choses avec IWizard, mais je ne suis pas sûr de pouvoir changer le répertoire de sauvegarde. – Bomlin

+0

Le descripteur de modèle XML spécifie tous les dossiers dans lesquels les fichiers de modèle doivent être copiés. Pourquoi ne pas simplement l'ajouter là? –

+0

Parce que cela contrôle la structure du dossier dans le projet. J'ai besoin de changer la structure du dossier au niveau de la solution. Ceci est un modèle multi-projet. – Bomlin

1

Vous shold regardez dans le Guidance Automation Toolkit. Entre autres choses, il vous permet de créer des modèles de solution qui vous permettront de faire tout ce que vous avez mentionné, et plus encore. Vous pouvez même présenter une interface utilisateur d'assistant à l'utilisateur demandant des options avec lesquelles vous pouvez ensuite personnaliser la solution, en termes de références de projet et de fichier à inclure. Vous pouvez configurer des paramètres de projet de toutes sortes; appliquer des normes, etc.

Vous pouvez voir un exemple sophistiqué de GAT dans le Service Factory. Il y a aussi un forum GAT au http://social.msdn.microsoft.com/forums/en-US/vsgatk/threads/. GAT est un excellent moyen d'utiliser Visual Studio Extensibility pour vraiment faire avancer les choses.

1

Après l'avoir examiné plus en détail, j'ai découvert que l'interface IWizard n'est même pas appelée avant que la structure de dossier de la solution (pas les projets) n'ait été créée. Puisque j'ai besoin de faire des progrès, j'ai décidé d'aller de l'avant et de passer à un complément à Visual Studio au lieu d'un processus purement basé sur un modèle.

J'ai déjà eu beaucoup plus de chance de créer la solution par programmation, puis d'ajouter des projets basés sur des modèles à ma solution. J'ai été capable de contourner le problème. J'ai coupé du code mais cela donne l'idée de base.

System.Type vsType = System.Type.GetTypeFromProgID ("VisualStudio.DTE.9.0"); DTE2 vs = (DTE2) System.Activator.CreateInstance (vsType, true);

soln = (solution2) par rapport à la solution;

soln.Create (PathProjectRoot, SolutionName);

soln.SaveAs (NomSolution);

Merci à tous pour vos suggestions.

+0

FYI, c'est exactement le genre de chose que l'on peut faire avec le GAT, mais ça peut faire encore plus. Un utilisateur peut exécuter une «recette» qui demande le nom de la solution, le projet, l'équipe ou autre, et la solution peut être construite au bon endroit dans l'arborescence source, avec les bonnes références, etc. –

Questions connexes