Exclusion de fichiers et de dossiers pour le déploiement
par Jason Lee
Cette rubrique explique comment exclure des fichiers et des dossiers d’un package de déploiement web lorsque vous générez et empaquetez un projet d’application web.
Cette rubrique fait partie d’une série de tutoriels basés sur les exigences de déploiement d’entreprise d’une société fictive nommée Fabrikam, Inc. Cette série de tutoriels utilise un exemple de solution, la solution Gestionnaire de contacts, pour représenter une application web avec un niveau de complexité réaliste, notamment une application ASP.NET MVC 3, un service Windows Communication Foundation (WCF) et un projet de base de données.
La méthode de déploiement au cœur de ces didacticiels est basée sur l’approche de fichier projet fractionné décrite dans Présentation du fichier projet, dans laquelle le processus de génération est contrôlé par deux fichiers projet : l’un contenant des instructions de génération qui s’appliquent à chaque environnement de destination et l’autre contenant des paramètres de build et de déploiement spécifiques à l’environnement. Au moment de la génération, le fichier projet spécifique à l’environnement est fusionné dans le fichier projet indépendant de l’environnement pour former un ensemble complet d’instructions de génération.
Vue d’ensemble
Lorsque vous générez un projet d’application web dans Visual Studio 2010, le pipeline de publication web (WPP) vous permet d’étendre ce processus de génération en empaquetant votre application web compilée dans un package web déployable. Vous pouvez ensuite utiliser l’outil de déploiement web des services Internet (IIS) (Web Deploy) pour déployer ce package web sur un serveur web IIS distant, ou importer le package web manuellement via le Gestionnaire des services Internet. Ce processus d’empaquetage est expliqué dans Création et empaquetage de projets d’application web.
Alors, comment contrôler ce qui est inclus dans votre package web ? Les paramètres de projet dans Visual Studio, via le fichier projet sous-jacent, fournissent un contrôle suffisant pour de nombreux scénarios. Toutefois, dans certains cas, vous pouvez adapter le contenu de votre package web à des environnements de destination spécifiques. Par exemple, vous pouvez inclure un dossier pour les fichiers journaux lorsque vous déployez votre application dans un environnement de test, mais exclure le dossier lorsque vous déployez l’application dans un environnement intermédiaire ou de production. Cette rubrique vous montre comment procéder.
Qu’est-ce qui est inclus par défaut ?
Lorsque vous configurez les propriétés de votre projet d’application web dans Visual Studio, la liste Éléments à déployer dans la page Package/Publier web vous permet de spécifier ce que vous souhaitez inclure dans votre package de déploiement web. Par défaut, cette valeur est définie sur Seuls les fichiers nécessaires à l’exécution de cette application.
Lorsque vous choisissez Uniquement les fichiers nécessaires à l’exécution de cette application, wpp tente de déterminer quels fichiers doivent être ajoutés au package web. notamment :
- Toutes les sorties de build pour le projet.
- Tous les fichiers marqués avec une action de génération de Contenu.
Notes
La logique qui détermine les fichiers à inclure est contenue dans ce fichier :
%PROGRAMFILES%\MSBuild\Microsoft\VisualStudio\v10.0\Web\ Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets
Exclusion de fichiers et de dossiers spécifiques
Dans certains cas, vous aurez besoin d’un contrôle plus précis sur les fichiers et dossiers déployés. Si vous savez quels fichiers vous souhaitez exclure à l’avance et que l’exclusion s’applique à tous les environnements de destination, vous pouvez simplement définir l’action de génération de chaque fichier sur Aucun.
Pour exclure des fichiers spécifiques du déploiement
- Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur le fichier, puis cliquez sur Propriétés.
- Dans la fenêtre Propriétés , dans la ligne Action de génération, sélectionnez Aucun.
Toutefois, cette approche n’est pas toujours pratique. Par exemple, vous souhaiterez peut-être varier les fichiers et dossiers inclus en fonction de votre environnement de destination et en dehors de Visual Studio. Par exemple, dans l’exemple de solution Gestionnaire de contacts, examinez le contenu du projet ContactManager.Mvc :
- Le dossier Interne contient des scripts SQL que le développeur utilise pour créer, supprimer et remplir des bases de données locales à des fins de développement. Rien dans ce dossier ne doit être déployé dans un environnement intermédiaire ou de production.
- Le dossier Scripts contient plusieurs fichiers JavaScript. Un grand nombre de ces fichiers sont inclus uniquement pour prendre en charge le débogage ou fournir IntelliSense dans Visual Studio. Certains de ces fichiers ne doivent pas être déployés dans des environnements intermédiaires ou de production. Toutefois, vous pouvez les déployer dans un environnement de test de développeur pour faciliter la résolution des problèmes.
Bien que vous puissiez manipuler vos fichiers projet pour exclure des fichiers et dossiers spécifiques, il existe un moyen plus simple. WpP inclut un mécanisme permettant d’exclure des fichiers et des dossiers en créant des listes d’éléments nommées ExcludeFromPackageFolders et ExcludeFromPackageFiles. Vous pouvez étendre ce mécanisme en ajoutant vos propres éléments à ces listes. Pour ce faire, vous devez effectuer ces étapes générales :
Créez un fichier projet personnalisé nommé [nom du projet].wpp.targets dans le même dossier que votre fichier projet.
Notes
Le fichier .wpp.targets doit se trouver dans le même dossier que le fichier projet de votre application web (par exemple , ContactManager.Mvc.csproj) plutôt que dans le même dossier que tous les fichiers projet personnalisés que vous utilisez pour contrôler le processus de génération et de déploiement.
Dans le fichier .wpp.targets , ajoutez un élément ItemGroup .
Dans l’élément ItemGroup , ajoutez des éléments ExcludeFromPackageFolders et ExcludeFromPackageFiles pour exclure des fichiers et dossiers spécifiques en fonction des besoins.
Voici la structure de base de ce fichier .wpp.targets :
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ExcludeFromPackageFolders Include="[semi-colon-separated folder list]">
<FromTarget>[arbitrary metadata value]</FromTarget>
</ExcludeFromPackageFolders>
<ExcludeFromPackageFiles Include="[semi-colon-separated file list]">
<FromTarget>[arbitrary metadata value]</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
Notez que chaque élément inclut un élément de métadonnées d’élément nommé FromTarget. Il s’agit d’une valeur facultative qui n’affecte pas le processus de génération ; il sert simplement à indiquer pourquoi des fichiers ou dossiers particuliers ont été omis si quelqu’un examine les journaux de build.
Exclusion de fichiers et de dossiers d’un package web
La procédure suivante vous montre comment ajouter un fichier .wpp.targets à un projet d’application web et comment utiliser le fichier pour exclure des fichiers et dossiers spécifiques du package web lorsque vous générez votre projet.
Pour exclure des fichiers et des dossiers d’un package de déploiement web
Ouvrez votre solution dans Visual Studio 2010.
Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur le nœud de votre projet d’application web (par exemple, ContactManager.Mvc), pointez sur Ajouter, puis cliquez sur Nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez le modèle Fichier XML .
Dans la zone Nom , tapez [nom du projet].wpp.targets (par exemple, ContactManager.Mvc.wpp.targets), puis cliquez sur Ajouter.
Notes
Si vous ajoutez un nouvel élément au nœud racine d’un projet, le fichier est créé dans le même dossier que le fichier projet. Vous pouvez le vérifier en ouvrant le dossier dans Windows Explorer.
Dans le fichier, ajoutez un élément Project et un élément ItemGroup :
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> </ItemGroup> </Project>
Si vous souhaitez exclure des dossiers du package web, ajoutez un élément ExcludeFromPackageFolders à l’élément ItemGroup :
Dans l’attribut Include , fournissez une liste séparée par des points-virgules des dossiers que vous souhaitez exclure.
Dans l’élément de métadonnées FromTarget , fournissez une valeur significative pour indiquer pourquoi les dossiers sont exclus, comme le nom du fichier .wpp.targets .
<ExcludeFromPackageFolders Include="Internal"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFolders>
Si vous souhaitez exclure des fichiers du package web, ajoutez un élément ExcludeFromPackageFiles à l’élément ItemGroup :
Dans l’attribut Include , fournissez une liste séparée par des points-virgules des fichiers que vous souhaitez exclure.
Dans l’élément de métadonnées FromTarget , fournissez une valeur significative pour indiquer pourquoi les fichiers sont exclus, comme le nom du fichier .wpp.targets .
<ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4-vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFiles>
Le fichier [nom du projet].wpp.targets doit maintenant ressembler à ceci :
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <ExcludeFromPackageFolders Include="Internal"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFolders> <ExcludeFromPackageFiles Include="Scripts\jquery-1.4.4- vsdoc.js;Scripts\jquery-1.4.4.js;Scripts\jquery-ui.js;Scripts\jquery.unobtrusive-ajax.js;Scripts\jquery.validate-vsdoc.js;Scripts\jquery.validate.js;Scripts\jquery.validate.unobtrusive.js;Scripts\MicrosoftAjax.debug.js;Scripts\MicrosoftMvcValidation.debug.js"> <FromTarget>ContactManager.Mvc.wpp.targets</FromTarget> </ExcludeFromPackageFiles> </ItemGroup> </Project>
Enregistrez et fermez le fichier [nom du projet].wpp.targets .
La prochaine fois que vous générerez et empaqueterez votre projet d’application web, WPP détectera automatiquement le fichier .wpp.targets . Les fichiers et dossiers que vous avez spécifiés ne seront pas inclus dans le package web.
Conclusion
Cette rubrique a décrit comment exclure des fichiers et dossiers spécifiques lorsque vous générez un package web, en créant un fichier .wpp.targets personnalisé dans le même dossier que le fichier projet de votre application web.
En savoir plus
Pour plus d’informations sur l’utilisation des fichiers projet de Microsoft Build Engine personnalisés (MSBuild) pour contrôler le processus de déploiement, consultez Présentation du fichier projet et Présentation du processus de génération. Pour plus d’informations sur le processus d’empaquetage et de déploiement, consultez Génération et empaquetage de projets d’application web, Configuration de paramètres pour le déploiement de packages web et Déploiement de packages web.