.net - tutorial - msbuild visual studio 2017




Cela vaut-il la peine d'apprendre à utiliser MSBuild? (7)

Je me demandais simplement si les gens pensaient qu'il valait la peine d'apprendre à utiliser la syntaxe MSBuild pour personnaliser le processus de construction d'un projet .net, ou si ça ne le vaut vraiment pas étant donné la facilité avec laquelle on peut construire un projet en studio visuel.

Je pense en termes de builds nocturnes, etc., mais alors je ne pourrais pas utiliser un événement planifié qui utilise l'option de construction de ligne de commande intégrée dans VS? Existe-t-il des outils supérieurs?


@kronoz Je dirais OUI. La bonne chose à propos de MSBuild est que si vous modifiez vos fichiers csproj pour inclure des étapes de construction personnalisées, ces étapes se produiront à partir de VS ou de MSBuild. Aussi, si vous avez un serveur de build, vous n'aurez pas besoin d'installer VS complet, seulement le SDK pour construire vos projets.

==> Ce n'est pas entièrement vrai. Par exemple, la construction d'un projet d'installation sur un serveur de construction nécessitera l'installation de Visual Studio !!


@kronoz
Je dirais OUI.
La bonne chose à propos de MSBuild est que si vous modifiez vos fichiers csproj pour inclure des étapes de construction personnalisées, ces étapes se produiront à partir de VS ou de MSBuild. Aussi, si vous avez un serveur de build, vous n'aurez pas besoin d'installer VS complet, seulement le SDK pour construire vos projets.



Il semble que vous êtes un seul développeur travaillant sur votre propre site. Si tel est le cas, ce n'est pas du tout nécessaire, mais c'est toujours une bonne idée pour vous d'apprendre dans le cadre de votre expérience professionnelle.

La construction automatisée de projets devient plus nécessaire à mesure que le nombre de développeurs travaillant sur un projet augmente. Il est très facile pour deux développeurs d'écrire du code incompatible qui se casse quand il est combiné (imaginez que j'appelle une fonction foo (int x), et vous changez la signature pour qu'elle soit foo (int x, int y): quand nous combiner nos bases de code, le code va casser.

Ces types d'erreurs augmentent en complexité et en difficulté avec la quantité de temps entre les générations d'intégration. En mettant en place des builds nocturnes, ou même des builds qui se produisent à chaque check-in, ces problèmes sont grandement réduits. Cette pratique est à peu près la norme de l'industrie pour les projets impliquant plusieurs développeurs.

Alors maintenant, pour répondre à votre question: c'est une compétence qui va traverser les projets et les entreprises. Vous devriez l'apprendre pour élargir vos connaissances et compétences en tant que développeur, et pour ajouter une ligne importante sur votre CV.


MSBuild vaut absolument le temps d'apprendre. Après la courbe d'apprentissage initiale (qui peut être très raide), il devient assez facile de faire les étapes d'automatisation de construction les plus courantes.

  • construire des assemblages en mode RELEASE
  • signer des assemblées avec un nom fort
  • essais unitaires en cours
  • modifier les fichiers xml / Web.config-s à la volée
  • modifier le numéro de version des assemblages
  • valider FxCop / StyleCop etc ...
  • déploiement automatisé - créer des bases de données SQL, sites Web IIS, services Windows etc ...

MSBuild vaut vraiment la peine d'apprendre pour tous ceux qui écrivent des logiciels .NET. La raison pour laquelle un serveur de build pour les applications .NET ne nécessite plus l'installation de Visual Studio (comme Andrew Burns l'a mentionné) est que MSBuild fait maintenant partie du .NET Framework.

Connaître MSBuild vous donnera une grande flexibilité dans le choix des technologies que vous utiliserez pour implémenter une intégration continue. Parce que j'ai pris le temps d'apprendre MSBuild, j'ai pu changer le système de CI que l'une de nos équipes utilisait de CruiseControl.NET pour TeamCity sans trop de difficultés. Ces serveurs CI, ou quelque chose comme FinalBuilder (que je ne connais pas), sont de meilleures options pour effectuer des compilations nocturnes qu'une tâche planifiée. Apprendre à implémenter des tâches MSBuild personnalisées vous donnera encore plus de flexibilité dans l'implémentation de builds personnalisés. Jivko Petiov a énuméré un certain nombre de tâches que MSBuild rend plus facile. Dans le cas du déploiement et de la configuration de la base de données, j'ai écrit des scripts qui le font dans MSBuild, et cela facilite beaucoup le processus de développement et de test.

Si Visual Studio Team System est dans votre avenir, les applications construites à l'aide de MSBuild seront beaucoup plus faciles à déplacer dans cet environnement que celles construites par des moyens alternatifs.

Il y a beaucoup de ressources disponibles pour vous aider à démarrer avec MSBuild. Je commencerais par Inside the Microsoft Build Engine . Un des co-auteurs a aussi une tonne de choses sur le web, y compris ce site , et un projet sur CodePlex .


Construire à partir de la ligne de commande avec MSBuild est relativement facile à apprendre. Commencez par ouvrir une invite de commandes Visual Studio et exécutez msbuild /? . Il suffit de lire l'aide une fois, puis décider plus tard si vous voulez apprendre plus de détails.

L'écriture de fichiers de projet est un peu plus compliquée. La plupart des gens n'ont pas besoin de l'apprendre, car vous pouvez faire la plupart des choses dans Visual Studio. Cependant, il est également très puissant pour certains problèmes.

J'ai dans le passé utilisé MSBuild comme langage de script, combiné avec beaucoup de tâches personnalisées. MSBuild a un support de journalisation fantastique + une gestion intégrée des dépendances. Cependant, ce n'est pas un langage facile à apprendre. PowerShell est un choix bien meilleur.





msbuild