Génération et empaquetage des projets d’application web

par Jason Lee

Lorsque vous souhaitez déployer un projet d’application web sur un environnement de serveur distant, votre première tâche consiste à générer le projet et à générer un package de déploiement web. Cette rubrique décrit le fonctionnement du processus de génération pour les projets d’application web. En particulier, il explique :

  • Comment le pipeline de publication web (WPP) étend le processus de génération pour inclure les fonctionnalités de déploiement.
  • Comment l’outil de déploiement web iis (Internet Information Services) transforme votre application web en package de déploiement.
  • Comment fonctionne le processus de génération et d’empaquetage et quels fichiers sont créés.

Dans Visual Studio 2010, le processus de génération et de déploiement pour les projets d’application web est pris en charge par WPP. WpP fournit un ensemble de cibles Microsoft Build Engine (MSBuild) qui étendent les fonctionnalités de MSBuild et lui permettent de s’intégrer à Web Deploy. Dans Visual Studio, vous pouvez voir cette fonctionnalité étendue dans les pages de propriétés de votre projet d’application web. La page Package/Publish Web , ainsi que la page Package/Publish SQL , vous permet de configurer la façon dont votre projet d’application web est empaqueté pour le déploiement une fois le processus de génération terminé.

La page Package/Publish Web, ainsi que la page Package/Publish S Q L, vous permet de configurer la façon dont votre projet d’application web est empaqueté pour le déploiement une fois le processus de génération terminé.

Comment fonctionne WPP ?

Si vous examinez le fichier projet d’un projet d’application web en C#, vous pouvez voir qu’il importe deux fichiers .targets.

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
                 v10.0\WebApplications\Microsoft.WebApplication.targets" />

La première instruction Import est commune à tous les projets Visual C#. Ce fichier, Microsoft.CSharp.targets, contient des cibles et des tâches spécifiques à Visual C#. Par exemple, la tâche du compilateur C# (Csc) est appelée ici. Le fichier Microsoft.CSharp.targets importe à son tour le fichier Microsoft.Common.targets . Cela définit des cibles communes à tous les projets, comme Build, Rebuild, Run, Compile et Clean. La deuxième instruction Import est spécifique aux projets d’application web. Le fichier Microsoft.WebApplication.targets importe à son tour le fichier Microsoft.Web.Publishing.targets . Le fichier Microsoft.Web.Publishing.targetsest essentiellement le FICHIER WPP. Il définit des cibles, telles que Package et MSDeployPublish, qui appellent Web Deploy pour effectuer diverses tâches de déploiement.

Pour comprendre comment ces cibles supplémentaires sont utilisées, dans l’exemple de solution Gestionnaire de contacts, ouvrez le fichier Publish.proj et examinez la cible BuildProjects .

<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
  <MSBuild Projects="@(ProjectsToBuild)"
           Properties="OutDir=$(OutputRoot);
                       Configuration=$(Configuration);
                       DeployOnBuild=true;
                       DeployTarget=Package"
           Targets="Build" />
</Target>

Cette cible utilise la tâche MSBuild pour générer différents projets. Notez les propriétés DeployOnBuild et DeployTarget :

  • La propriété DeployOnBuild=true signifie essentiellement « Je souhaite exécuter une cible supplémentaire lorsque la génération se termine correctement ».
  • La propriété DeployTarget identifie le nom de la cible que vous souhaitez exécuter lorsque la propriété DeployOnBuild est égale à true. Dans ce cas, vous spécifiez que vous souhaitez que MSBuild exécute la cible de package après avoir généré le projet.

La cible de package est définie dans le fichier Microsoft.Web.Publishing.targets . Essentiellement, cette cible prend la sortie de build de votre projet d’application web et la transforme en package de déploiement web qui peut être publié sur un serveur web IIS.

Notes

Pour afficher un fichier projet (par exemple, ContactManager.Mvc.csproj) dans Visual Studio 2010, vous devez d’abord décharger le projet de votre solution. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis cliquez sur Décharger le projet. Cliquez de nouveau avec le bouton droit sur le nœud du projet, puis cliquez sur Modifier[fichier projet]). Le fichier projet s’ouvre dans sa forme XML brute. N’oubliez pas de recharger le projet lorsque vous avez terminé.
Pour plus d’informations sur les cibles, les tâches et les instructions Import MSBuild, consultez Présentation du fichier projet. Pour une présentation plus approfondie des fichiers projet et du WPP, consultez Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build par Sayed Ibrahim Hashimi et William Bartholomew, ISBN: 978-0-7356-4524-0.

Qu’est-ce qu’un package de déploiement web ?

Lorsque vous générez et déployez un projet d’application web, soit à l’aide de Visual Studio 2010, soit directement à l’aide de MSBuild, le résultat final est généralement un package de déploiement web. Le package de déploiement web est un fichier .zip. Il contient tout ce dont IIS et Web Deploy ont besoin pour recréer votre application web, notamment :

  • La sortie compilée de votre application web, y compris le contenu, les fichiers de ressources, les fichiers de configuration, JavaScript et les ressources CSS (feuilles de style en cascade), etc.
  • Assemblys pour votre projet d’application web et pour tous les projets référencés au sein de votre solution.
  • Scripts SQL pour générer toutes les bases de données que vous déployez avec votre application web.

Une fois le package de déploiement web généré, vous pouvez le publier sur un serveur web IIS de différentes façons. Par exemple, vous pouvez le déployer à distance en ciblant le service Web Deploy Remote Agent ou le gestionnaire Web Deploy sur le serveur web de destination, ou vous pouvez utiliser le Gestionnaire des services Internet pour importer manuellement le package sur le serveur web de destination. Pour plus d’informations sur ces approches de déploiement, consultez Choisir la bonne approche du déploiement web.

Comment fonctionne le processus de génération ?

Cela montre ce qui se passe lorsque vous générez et empaquetez un projet d’application web :

Que se passe-t-il lorsque vous générez et empaquetez un projet d’application web.

Lorsque vous générez un projet d’application web, le processus de génération génère un fichier nommé [nom du projet].SourceManifest.xml. Avec le fichier projet et la sortie de build, ce fichier .SourceManifest.xml indique à Web Deploy ce qu’il doit inclure dans le package de déploiement web. À l’aide de ces entrées, Web Deploy génère un package de déploiement web nommé [nom du projet].zip.

En plus du package de déploiement web, le processus de génération génère deux fichiers qui peuvent vous aider à utiliser le package :

  • Le fichier .deploy.cmd inclut un ensemble de commandes Web Deploy paramétrables (MSDeploy.exe) qui publient votre package de déploiement web sur un serveur web IIS distant. L’exécution du fichier .deploy.cmd , avec les paramètres appropriés, offre généralement une alternative plus rapide et plus facile à la construction manuelle des commandes MSDeploy.exe vous-même.
  • Le fichier SetParameters.xml fournit un ensemble de valeurs de paramètres à la commande MSDeploy.exe. Ces valeurs incluent des propriétés telles que le nom de l’application web IIS sur laquelle vous souhaitez déployer le package, les valeurs des points de terminaison de service et des chaînes de connexion définis dans le fichier web.config , ainsi que toutes les valeurs de propriété de déploiement définies dans les pages de propriétés du projet.

Le fichier SetParameters.xml est essentiel à la gestion du processus de déploiement. Ce fichier est généré dynamiquement en fonction du contenu de votre projet d’application web. Par exemple, si vous ajoutez une chaîne de connexion à votre fichier web.config , le processus de génération détecte automatiquement la chaîne de connexion, paramétre le déploiement en conséquence et crée une entrée dans le fichier SetParameters.xml pour vous permettre de modifier la chaîne de connexion dans le cadre du processus de déploiement. La rubrique suivante, Configuration des paramètres pour le déploiement de package web, explique plus en détail le rôle de ce fichier et décrit les différentes façons dont vous pouvez le modifier pendant la génération et le déploiement.

Notes

Dans Visual Studio 2010, WPP ne prend pas en charge la précompilation des pages dans une application web avant l’empaquetage. La prochaine version de Visual Studio et de WPP inclura la possibilité de précompiler une application web en tant qu’option d’empaquetage.

Conclusion

Cette rubrique a fourni une vue d’ensemble du processus de génération et d’empaquetage pour les projets d’application web dans Visual Studio 2010. Il a décrit comment WPP vous permet d’appeler des commandes Web Deploy à partir de MSBuild, et il a expliqué le fonctionnement du processus de génération et d’empaquetage.

Une fois que vous avez créé un package de déploiement web, l’étape suivante consiste à le déployer. Pour plus d’informations à ce sujet, consultez Configuration des paramètres pour le déploiement de packages web et Déploiement de packages web.

En savoir plus

Les rubriques suivantes de ce didacticiel, Configuration des paramètres pour le déploiement de packages web et déploiement de packages web, fournissent des conseils sur l’utilisation du package web que vous avez créé. Le dernier didacticiel de cette série, Advanced Enterprise Web Deployment, fournit des conseils sur la façon de personnaliser et de dépanner le processus d’empaquetage.

Pour une présentation plus approfondie des fichiers projet et du WPP, consultez Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build par Sayed Ibrahim Hashimi et William Bartholomew, ISBN: 978-0-7356-4524-0.