Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
par Tom Dykstra
Télécharger le projet de démarrage
Cette série de tutoriels vous montre comment déployer (publier) une application web ASP.NET sur Azure App Service Web Apps ou sur un fournisseur d’hébergement tiers, à l’aide de Visual Studio 2012 ou de Visual Studio 2010. Pour plus d’informations sur la série, consultez le premier didacticiel de la série.
Aperçu
Ce tutoriel montre comment étendre le pipeline de publication web Visual Studio pour effectuer une tâche supplémentaire pendant le déploiement. La tâche consiste à copier des fichiers supplémentaires qui ne figurent pas dans le dossier du projet sur le site web de destination.
Pour ce tutoriel, vous allez copier un fichier supplémentaire : robots.txt. Vous souhaitez déployer ce fichier en préproduction, mais pas en production. Dans le didacticiel Déploiement en production , vous avez ajouté ce fichier au projet et configuré le profil de publication de production pour l’exclure. Dans ce tutoriel, vous verrez une autre méthode pour traiter cette situation, qui sera utile pour tous les fichiers que vous souhaitez déployer, mais que vous ne voulez pas inclure dans le projet.
Déplacer le fichier robots.txt
Pour préparer une autre méthode de gestion desrobots.txt, dans cette section du tutoriel, vous déplacez le fichier vers un dossier qui n’est pas inclus dans le projet et vous supprimez robots.txt de l’environnement intermédiaire. Il est nécessaire de supprimer le fichier de l'environnement de mise en scène afin de pouvoir vérifier que votre nouvelle méthode de déploiement du fichier dans cet environnement fonctionne correctement.
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier robots.txt , puis cliquez sur Exclure du projet.
À l’aide de l’Explorateur de fichiers Windows, créez un dossier dans le dossier de solution et nommez-le ExtraFiles.
Déplacez le fichier robots.txt du dossier du projet ContosoUniversity vers le dossier ExtraFiles .
À l’aide de votre outil FTP, supprimez le fichier robots.txt du site web intermédiaire.
Comme alternative, vous pouvez sélectionner Supprimer des fichiers supplémentaires à la destination sous Options de publication de fichiers dans l’onglet Paramètres du profil de publication intermédiaire et republier vers la préproduction.
Mettre à jour le fichier de profil de publication
Vous avez seulement besoin de robots.txt en préproduction, donc le seul profil de publication que vous devez mettre à jour pour le déployer est Staging.
Dans Visual Studio, ouvrez Staging.pubxml.
À la fin du fichier, avant la balise de fermeture
</Project>, ajoutez le balisage suivant :<Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="..\ExtraFiles\**\*" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target>Ce code crée une cible qui collecte des fichiers supplémentaires à déployer. Une cible est composée d’une ou plusieurs tâches que MSBuild exécutera en fonction des conditions que vous spécifiez.
L’attribut
Includespécifie que le dossier dans lequel rechercher les fichiers est ExtraFiles, situé au même niveau que le dossier du projet. MSBuild collecte tous les fichiers de ce dossier et récursivement à partir de tous les sous-dossiers (le double astérisque spécifie les sous-dossiers récursifs). Avec ce code, vous pouvez placer plusieurs fichiers et fichiers dans des sous-dossiers dans le dossier ExtraFiles , et tous seront déployés.L’élément
DestinationRelativePathspécifie que les dossiers et fichiers doivent être copiés dans le dossier racine du site web de destination, dans la même structure de fichiers et de dossiers qu’ils se trouvent dans le dossier ExtraFiles . Si vous souhaitez copier le dossier ExtraFiles lui-même, laDestinationRelativePathvaleur est ExtraFiles\%(RecursiveDir)%(Filename)%(Extension).À la fin du fichier, avant la balise de fermeture
</Project>, ajoutez le balisage suivant qui spécifie quand exécuter la nouvelle cible.<PropertyGroup> <CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn> <CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn> </PropertyGroup>Ce code entraîne l’exécution de la nouvelle
CustomCollectFilescible chaque fois que la cible qui copie des fichiers dans le dossier de destination est exécutée. Il existe une cible distincte pour la création de package de publication et de déploiement, et la nouvelle cible est injectée dans les deux cibles au cas où vous décidez de déployer à l’aide d’un package de déploiement au lieu de la publication.Le fichier .pubxml ressemble maintenant à l’exemple suivant :
<?xml version="1.0" encoding="utf-8"?> <!-- This file is used by the publish/package process of your Web project. You can customize the behavior of this process by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <WebPublishMethod>MSDeploy</WebPublishMethod> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <SiteUrlToLaunchAfterPublish>http://contosou-staging.azurewebsites.net</SiteUrlToLaunchAfterPublish> <ExcludeApp_Data>True</ExcludeApp_Data> <MSDeployServiceURL>waws-prod-bay-001.publish.azurewebsites.windows.net:443</MSDeployServiceURL> <DeployIisAppPath>contosou-staging</DeployIisAppPath> <RemoteSitePhysicalPath /> <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer> <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> <UserName>$contosou-staging</UserName> <_SavePWD>True</_SavePWD> <PublishDatabaseSettings> <Objects xmlns=""> <ObjectGroup Name="SchoolContext" Order="1" Enabled="True"> <Destination Path="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User ID=CU-staging-admin@sk0264hvc9;Password=" Name="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=" /> <Object Type="DbCodeFirst"> <Source Path="DBMigration" DbContext="ContosoUniversity.DAL.SchoolContext, ContosoUniversity.DAL" MigrationConfiguration="ContosoUniversity.DAL.Migrations.Configuration, ContosoUniversity.DAL" Origin="Configuration" /> </Object> </ObjectGroup> <ObjectGroup Name="DefaultConnection" Order="2" Enabled="False"> <Destination Path="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User ID=CU-staging-admin@sk0264hvc9;Password=" Name="Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=" /> <Object Type="DbDacFx"> <PreSource Path="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-ContosoUniversity.mdf;Initial Catalog=aspnet-ContosoUniversity;Integrated Security=True" includeData="False" /> <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" /> </Object> <UpdateFrom Type="Web.Config"> <Source MatchValue="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;Initial Catalog=aspnet-ContosoUniversity;AttachDBFilename=|DataDirectory|\aspnet-ContosoUniversity.mdf" MatchAttributes="$(UpdateFromConnectionStringAttributes)" /> </UpdateFrom> <Object Type="DbFullSql" Enabled="False"> <Source Path="..\aspnet-data-prod.sql" Transacted="False" /> </Object> </ObjectGroup> </Objects> </PublishDatabaseSettings> <EnableMSDeployBackup>False</EnableMSDeployBackup> </PropertyGroup> <ItemGroup> <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String"> <ParameterValue>Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=</ParameterValue> </MSDeployParameterValue> <MSDeployParameterValue Include="$(DeployParameterPrefix)SchoolContext-Web.config Connection String"> <ParameterValue>Data Source=tcp:sk0264hvc9.database.windows.net,1433;Initial Catalog=ContosoUniversity-staging;User Id=CU-staging-admin@sk0264hvc9;Password=</ParameterValue> </MSDeployParameterValue> </ItemGroup> <Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="..\ExtraFiles\**\*" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target> <PropertyGroup> <CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn> <CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn> </PropertyGroup> </Project>Enregistrez et fermez le fichier Staging.pubxml .
Publier dans la préproduction
À l’aide d’une publication en un clic ou de la ligne de commande, publiez l’application à l’aide du profil intermédiaire.
Si vous utilisez la publication en un clic, vous pouvez vérifier dans la fenêtre d’aperçu que robots.txt sera copiée. Sinon, utilisez votre outil FTP pour vérifier que le fichier robots.txt se trouve dans le dossier racine du site web après le déploiement.
Résumé
Cette série de didacticiels est terminée sur le déploiement d’une application web ASP.NET sur un fournisseur d’hébergement tiers. Pour plus d’informations sur l’une des rubriques abordées dans ces didacticiels, consultez le Plan de contenu de déploiement d'ASP.NET.
Plus d’informations
Si vous savez comment utiliser des fichiers MSBuild, vous pouvez automatiser de nombreuses autres tâches de déploiement en écrivant du code dans des fichiers .pubxml (pour les tâches spécifiques au profil) ou le fichier .wpp.targets du projet (pour les tâches qui s’appliquent à tous les profils). Pour plus d’informations sur les fichiers .pubxml et .wpp.targets, consultez Comment : Modifier les paramètres de déploiement dans les fichiers de profil de publication (.pubxml) et le fichier .wpp.targets dans les projets Web de Visual Studio. Pour une présentation de base du code MSBuild, consultez l’anatomie d’un fichier projet dans la série de déploiement d’entreprise : présentation du fichier projet. Pour savoir comment utiliser des fichiers MSBuild pour effectuer des tâches pour vos propres scénarios, consultez ce livre : Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build by Sayed Ibraham Hashimi and William Bartholomew.
Remerciements
J’aimerais remercier les personnes suivantes qui ont apporté des contributions significatives au contenu de cette série de tutoriels :
- Alberto Poblacion, MVP &MCT, Espagne
- Jarod Ferguson, MVP de développement de plateforme de données, États-Unis
- Harsh Mittal, Microsoft
- Jon Galloway (twitter : @jongalloway)
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Italie
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft(twitter : @sayedihashimi)
- Scott Hanselman (twitter : @shanselman)
- Scott Hunter, Microsoft (twitter : @coolcsh)
- Srđan Božović, Serbie
- Vishal Joshi, Microsoft (twitter : @vishalrjoshi)