9
votes

Comment passer à des constructions automatisées avec Visual Studio?

Je travaille dans le petit magasin .net où nous construisons actuellement toutes nos solutions à l'aide de l'IDE Visual Studio. Nous voulons progresser vers un point où nous sommes en contrôle total de nos scripts MSBUILD pour la construction, le test, le déploiement de l'utilisation des tâches communautaires MSBUILD, etc.

Je suppose que ma question est la suivante: Qu'est-ce qui sera différent dans l'expérience de développement Visual Studio?

Si nous créons nos propres fichiers MsBuild .Proj, cela signifie-t-il que nous n'avons plus de fichiers .CSPROJ? Comment les projets ont-ils examiné vs maintenant?

Est-ce que je manque quelque chose de vraiment évident?

mise à jour Merci tout d'avoir pris le temps de répondre. Je suis au courant de certains des outils de construction: Cruisecontrol, TeamCity, etc., ainsi que les projets VS (.csproj, etc.) ne sont que des fichiers Msbuild. Ce que j'essaie d'obtenir une poignée est ceux qui ont décidé d'écrire leurs propres scripts et leurs propres fichiers .proj. Utilisent-ils les fichiers vs .csproj comme le «conteneur» pour contenir leurs fichiers de code dans l'IDE? Comment déclenchent-ils leurs propres développeurs? Est-ce qu'ils ne font que enfoncer Msbuild de la ligne de commande? Avoir un bouton sur une barre d'outils qui fait efficacement la même chose?

En résumé - Oui, vous pouvez en effet utiliser d'autres outils pour piloter votre construction en appelant les fichiers de fichier .sln ou .CSProj, mais il y a une autre façon - comment cela fonctionne-t-il?


4 commentaires

BTW, Thumbs Up de déménagement dans un processus de construction automatisé! Une fois que vous l'avez arrêté, vous vous demanderez pourquoi vous l'avez jamais fait manuellement en premier lieu.


L'un de nos objectifs était d'accéder à un processus de libération «en un clic» (bien que ne le rendez pas en direct). Maintenant, j'essaie juste de déterminer comment en faire deux clics :) Comme il est si facile de déclencher accidentellement une version de déverrouillage qui crée des balises, etc., dans le contrôle source que vous devez ensuite aller nettoyer.


Mec-ce que je veux arriver à. Comment déclenchez-vous ces constructions?


Utilisation d'Hudson + certaines de ses tâches spécifiques et d'un fichier .Proj personnalisé pour gérer certaines spécificités telles que la zippation, la copie, le marquage, etc. de la construction.


6 Réponses :


6
votes

Nous utilisons MSBuild pour effectuer des constructions automatisées et vous pouvez simplement signaler Msbuild dans votre fichier de solution sans aucune modification.

Aussi juste pour clarifier, nous utilisons également un serveur de construction automatisé (Hudson avec plugins .NET) qui utilise Msbuild pour automatiser le processus.


7 commentaires

Et félicitations à passer à un processus de construction automatisé :-)


C'est exactement ce que nous faisons aussi. Msbuild à travers Hudson et ça marche magnifiquement .


Vous utilisez donc Hudson pour exécuter votre fichier de solution? Et si vous vouliez faire des tâches supplémentaires (Zip / Créer IIS Virtual Dir, etc, etc.)? Comment conviendriez-vous cela dans votre script de construction?


À Hudson, vous pouvez également ajouter des scripts de ligne de commande supplémentaires pour exécuter d'autres tâches après la fin de l'étape MSBuild.


Je trouve qu'il est plus agréable d'utiliser plus de scripts Msbuild ou Nant plutôt que de la ligne de commande, bien que PowerShell soit acceptable. Les fichiers de lots sont trop limités.


J'aurais dû élaborer un peu. Nous exécutons des fichiers VBScript à partir de la ligne de commande bien que j'aimerais nous voir déplacer dans la direction d'utiliser des scripts PowerShell. Nant nous avons utilisé dans le passé, mais réellement mis à niveau vers .NET 3.5 avant qu'il ne soit compatible.


Pour des tâches supplémentaires, ne pourraient pas pré-construire et que l'événement de post-construction fonctionne? Ça fait longtemps depuis que je suis gouté avec eux pour un fichier .csproj, mais je pense qu'ils travailleraient



2
votes

Vous devriez regarder Cruisecontrol.net Plutôt que de rouler votre propre processus automatisé de construction et de CI. Cela facilite beaucoup plus facilement et peut faire des choses supplémentaires telles que courir jusqu'à ce que des tests ou des outils de couverture de code ou quoi que ce soit dans le cadre du processus de construction.


2 commentaires

J'ai toujours été sous l'impression que Cruisecontrol était quelque chose que vous avez couru sur le serveur de construction sur une base régulière / hebdomadaire / continue / continue. Vous n'utilisez pas cela pour vos constructions de compilation / de test spécifiques au développeur quotidiennes, êtes-vous?


@Pete: Oui, vous avez raison à ce sujet. La gâchette pour la construction est réglable, bien sûr (généralement sur l'enregistrement), mais ce n'est pas un outil de bureau de développement (que je connaisse).



2
votes

Qu'est-ce qui sera différent dans l'expérience de développement Visual Studio?

rien, typiquement. en fait, si vous le faites bien, cela devrait être transparent; Votre IDE ne devrait pas se soucier du gestionnaire de construction que vous utilisez. C'est pourquoi les solutions telles que Cruisecontrol.net et Hudson sont bien.

Si nous créons nos propres fichiers MsBuild .Proj, cela signifie-t-il que nous n'avons plus de fichiers .CSPROJ? Comment les projets ont-ils examiné vs maintenant?

Votre structure de solution reste la même. Dans Visual Studio, Solutions et projets Double Duty en tant que guide de l'organisation / d'emballage de projet et de la commodité de l'IDE. Votre gestionnaire de construction vous aidera à comprendre ce qui doit être construit.


1 commentaires

Merci John. Je vais devoir regarder dans Hudson.



2
votes

Il existe plusieurs bons outils de construction automatisés et continus disponibles, qui s'appuient sur Msbuild. Vos fichiers de projet C # déjà sont MSBUILD Files - Donc, en réalité, puisque VS2005, vous utilisez MSBuild sur votre poste de travail local pour créer votre construction - vous n'aurez peut-être pas encore connu à ce sujet: -) < / p>

Outre Cruisecontrol.net (mentionné par JP) qui vaut vraiment la peine d'être un look, je recommanderais également deux autres produits:

  • FinalBuilder Server qui semble être presque inconnu de la grande majorité des développeurs (mais cela mérite certainement plus d'attention! Excellent outil). Ils ont également une version de bureau autonome finalBuilder si c'est quelque chose dont vous pourriez avoir besoin. Ce n'est pas gratuit - mais à 100 $ pour un utilisateur (et 450 $ pour 5), ce n'est vraiment pas une énorme dépense

  • TeamCity par jetbrains - également bien connu pour leur produit Restomer dans le .NET .NET World - qui offre une version Pro GRATUITE pour les équipes jusqu'à 20 utilisateurs / plans de construction et une édition d'entreprise beaucoup plus coûteuse, si vous avez grandi :-)

    Comparé à CRUUISECONTROL.NET, les deux offrent des interfaces d'interface graphique sympathiques conviviales pour configurer vos constructions, ainsi que les surveiller.

    Et comme je l'ai mentionné - les deux s'appuient sur la structure de votre projet de projet et de solution existant, donc pas besoin de changer quoi que ce soit du tout.

    Vous ne pouvez vraiment pas vous tromper avec une intégration continue! Je ne pouvais plus être sans les commentaires immédiats ......

    marc


5 commentaires

L'édition d'entreprise n'est pas si cher si vous avez assez devenu pour l'utiliser.


Merci Marc. Je vais vous demander la même question que j'ai posée James ci-dessus: Et si vous vouliez faire des tâches supplémentaires (Zip / Créer IIS virtuel, etc., etc.)? Comment conviendriez-vous cela dans votre script de construction?


FinalBuilder et TeamCity ont à la fois ces tâches supplémentaires disponibles. Votre fichier de solution explique comment créer la solution et ses projets - des étapes supplémentaires sont dans vos scripts CI. Vous pouvez sélectionner votre sortie, le copier sur un serveur Share ou FTP, démarrez une machine virtuelle et exécutez l'installation et à peu près tout ce que vous pouvez rêver! Ces commandes sont dans le script finalBuilder ou TeamCity - pas dans vos fichiers de solution / projet.


J'ai déjà ajouté ce problème ci-dessus, mais parfois les commentaires sont manqués, alors ... Vous pouvez essayer des événements de pré-construction et de post-construction directement sur le fichier .csproj, ils pourraient fonctionner.


VRAI, mais ceux-ci sont plutôt limités - la plupart des outils CI ont un ensemble riche de fonctionnalités qui sont souvent beaucoup meilleures que ce que vous pouvez faire dans un fichier de commandes avant ou post-construction directement dans VS.



1
votes

Nous utilisons TeamCity au travail; Nous avons commencé avec Cruisecontrol.net mais changé quand un autre développeur m'a signalé que je serais maintenir le CC construire à jamais autrement. ;) Sérieusement, TeamCity est très facile à apprendre et à utiliser.

J'ai posé des questions similaires lorsque j'ai entendu parler d'une intégration continue. Devez-vous réécrire (et maintenir) toutes les solutions et projets à la main? Avez-vous besoin d'apprendre les commandes MSBUILD? La réponse courte est non.

Comme M. Harvey mentionné, vous pouvez simplement appeler MSBuild sur une solution ou un fichier de projet créé par VS, et cela le construira pour vous. TeamCity gérera cela automatiquement.

Si vous voulez plus de flexibilité, je recommanderais Nant . J'ai travaillé avec des scripts msbuild codant à la main et c'est un exercice de frustration. Nant a une syntaxe plus propre et (pour moi) est plus facile à utiliser et à lire. Nous utilisons Nant pour les trucs fantaisie et (encore) appelle Msbuild de Nant lorsque nous voulons créer un projet ou une solution. TeamCity soutient Nant.

Résumez, pour nous, rien n'a vraiment changé dans Visual Studio. Nous créons et maintenons toujours nos projets et nos solutions de la même manière. Lorsque nous les vérifions dans le contrôle de la source (TFS), TeamCity choisit automatiquement cela, construit les solutions et exécute nos tests (Nunit). Nous avons également des constructions de déploiement en un clic configurées (en équipe utilisant Nant).


2 commentaires

Cool - Merci pour cela. J'ai eu ombre et aahhhed de savoir s'il faut descendre la route Nant ou Msbuild. Je sais pas mal de quelques peeps là-bas, comme vous-même qui disent que Nant est plus «confortable» pour les trucs fantaisie, mais je ne sais pas si je peux m'apporter à l'apprendre à ce niveau. En outre, dans une période d'une année, je vais probablement faire tout ce genre de choses à irruby avec un ratisser ou quelque chose! ;-)


Vraiment, avec le logiciel de construction CI moderne, vous n'avez souvent pas besoin d'écrire des scripts de construction de fantaisie. Ils sont juste un autre outil dans votre boîte à outils.



1
votes

Merci à tous pour vos réponses, mais avec un peu de recherche, j'ai trouvé des idées sur les moyens de le faire un peu différemment:

  • Pour étendre le processus de construction au-delà des contraintes des fichiers .SLN & .CSPROJ
  • encore toujours utiliser Visual Studio
  • et garder dans le monde Msbuild autant que possible
  • Ajout des capacités des serveurs de construction tels que TeamCity et Hudson si nécessaire
  • mais ne pas dépendre de ces serveurs pour la fonctionnalité qu'un script de construction devrait fournir.

    alors ce que j'ai trouvé est: Ce blog plus ancien de Scott Hanselman sur Organisation du code . Ici, il utilise Nant au lieu de Msbuild, mais le concept sous-jacent consiste à exécuter le projet Nant / Msbuild que vous souhaitez via un fichier de parquet .bat.

    "Dans ce répertoire de silvèle, nous avons des choses comme build.bat et construire.bat.bat. Le but étant que les gens puissent obtenir les choses à partir du contrôle de la source et de taper la construction et d'être quelque part utile. C'est très réconfortant de pouvoir être capable de faire de la fiabilité et construit simplement un système entier. "

    De cela, je peux voir qu'il est (évidemment) toujours à l'aide de .sln et .csproj pour contenir ses fichiers ensemble pour VS - et peut construire via vs si nécessaire - mais fait sa construction via le nant .build Fichiers, exécutés via .bat.

    Cet autre message (aussi de Scott Hanselman) montre comment vous pouvez Exécutez des outils externes (tels que MSBuild ou un fichier .bat) à partir de Visual Studio. Donc, j'ai créé un fichier build.bat qui ressemble à: xxx

    (j'ai obtenu les modificateurs de paramètres funky ~ p et ~ f de ici ;% ~ F1 étend la mysolution .sln au chemin complet de la SLN); -)

    J'ai ensuite configuré la boîte de dialogue Visual Studio "Outils externes" afin que: - la commande est "build.bat" - Arguments est "$ (SolutionFileName) / V: M" - Le répertoire initial est "& (solutiondir)"

    et j'ai ajouté un bouton à la barre d'outils pour l'exécuter. Je peux aller plus loin pour mapper la touche F5 pour exécuter cela, plutôt que la construction standard Visual Studio.

    Quoi qu'il en soit, ce ne sont que quelques idées (cerfs cerveau de quelqu'un d'autre!) Mais cela me donne plus de perspicacité construit et comment ils peuvent être faites. Il existe certaines limitations (telles que les erreurs n'apparaîtront pas dans la fenêtre de la liste d'erreurs), mais je suis sûr que cela peut être surmonté si nécessaire.

    Je vais donner cela un aller et voir Ce que je peux réaliser sur Msbuild seul, puis essayez également de connecter à Hudson et de voir ce que cuisiniers! : -)

    Au fait, si quelqu'un lit toujours à ce stade et a une opinion sur la question de savoir si les choses que j'ai présentées dans ma propre réponse sont bonnes / mauvaises / droites / overkillées / overkillées / obsolètes / imparfait / peu importe, n'hésitez pas à lancer avec votre opinion.

    Nice, Pete.


1 commentaires

Au fait - je me rends compte que je n'ai pas réellement besoin de faire ce genre de choses - je peux simplement faire ce que James et les autres ont suggéré. Je veux juste savoir pour moi ce que je me sens le plus à l'aise.