Partager via


ASP.NET déploiement web à l’aide de Visual Studio : Déploiement en ligne de commande

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.

Vue d’ensemble

Ce tutoriel vous montre comment appeler le pipeline de publication web Visual Studio à partir de la ligne de commande. Cela est utile pour les scénarios où vous souhaitez automatiser le processus de déploiement au lieu de le faire manuellement dans Visual Studio, généralement à l’aide d’un système de contrôle de version de code source.

Apporter une modification au déploiement

Actuellement, la page About affiche le code du modèle.

À propos de la page avec le code du modèle

Vous allez remplacer cela par du code qui affiche un résumé de l’inscription des étudiants.

Ouvrez la page About.aspx , supprimez tout le balisage à l’intérieur de l’élément MainContent Content et insérez le balisage suivant à sa place :

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

Exécutez le projet et sélectionnez la page À propos .

Page About

Déployer sur Test à l’aide de la ligne de commande

Vous ne allez pas déployer une autre modification de base de données. Désactivez donc le déploiement de base de données dbDacFx pour la base de données aspnet-ContosoUniversity. Ouvrez l’Assistant Publier le web et, dans chacun des trois profils de publication, désactivez la case à cocher Mettre à jour la base de données sous l’onglet Paramètres .

Dans la page de démarrage de Windows 8, recherchez l’invite de commandes développeur pour VS2012.

Cliquez avec le bouton droit sur l’icône de l’invite de commandes développeur pour VS2012 , puis cliquez sur Exécuter en tant qu’administrateur.

Entrez la commande suivante à l’invite de commandes, en remplaçant le chemin d’accès au fichier solution par le chemin d’accès à votre fichier solution :

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild génère la solution et la déploie dans l’environnement de test.

Sortie de ligne de commande

Ouvrez un navigateur et accédez à http://localhost/ContosoUniversity, puis cliquez sur la page À propos pour vérifier que le déploiement a réussi.

Si vous n’avez pas créé d’étudiants dans le test, vous verrez une page vide sous l’en-tête Statistiques du corps des étudiants. Accédez à la page Étudiants , cliquez sur Ajouter un étudiant, puis ajoutez des étudiants, puis revenez à la page About pour afficher les statistiques des étudiants.

Capture d’écran montrant les statistiques du corps de l’étudiant sur la page About.

Options de ligne de commande clé

La commande que vous avez entrée a passé le chemin du fichier solution et deux propriétés à MSBuild :

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

Déploiement de la solution par rapport au déploiement de projets individuels

La spécification du fichier solution entraîne la génération de tous les projets de la solution. Si vous avez plusieurs projets web dans la solution, le comportement MSBuild suivant s’applique :

  • Les propriétés que vous spécifiez sur la ligne de commande sont transmises à chaque projet. Par conséquent, chaque projet web doit avoir un profil de publication portant le nom que vous spécifiez. Si vous spécifiez /p:PublishProfile=Test, chaque projet web doit avoir un profil de publication nommé Test.
  • Vous pouvez publier un projet quand un autre n’est même pas généré. Pour plus d’informations, consultez le thread stackoverflow MSBuild échoue avec deux packages.

Si vous spécifiez un projet individuel au lieu d’une solution, vous devez ajouter un paramètre qui spécifie la version de Visual Studio. Si vous utilisez Visual Studio 2012, la ligne de commande ressemble à l’exemple suivant :

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

Le numéro de version de Visual Studio 2010 est 10.0. Pour plus d’informations, consultez la compatibilité des projets Visual Studio et VisualStudioVersion sur le blog de Sayed Hashimi.

Spécification du profil de publication

Vous pouvez spécifier le profil de publication par nom ou par le chemin complet du fichier .pubxml , comme illustré dans l’exemple suivant :

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

Méthodes de publication web prises en charge pour la publication en ligne de commande

Trois méthodes de publication sont prises en charge pour la publication en ligne de commande :

  • MSDeploy - Publier à l’aide du déploiement web.
  • Package - Publier en créant un package Web Deploy. Vous devez installer le package séparément de la commande MSBuild qui la crée.
  • FileSystem - Publier en copiant des fichiers dans un dossier spécifié.

Spécification de la configuration et de la plateforme de build

La configuration et la plateforme de build doivent être définies dans Visual Studio ou sur la ligne de commande. Les profils de publication incluent des propriétés nommées LastUsedBuildConfiguration et LastUsedPlatform, mais vous ne pouvez pas définir ces propriétés pour déterminer la façon dont le projet est généré. Pour plus d’informations, consultez MSBuild : comment définir la propriété de configuration sur le blog de Sayed Hashimi.

Déployer vers un environnement intermédiaire

Pour effectuer un déploiement sur Azure, vous devez ajouter le mot de passe à la ligne de commande. Si vous avez enregistré le mot de passe dans le profil de publication dans Visual Studio, il a été stocké sous forme chiffrée dans le fichier .pubxml.user . Ce fichier n’est pas accessible par MSBuild lorsque vous effectuez un déploiement de ligne de commande. Vous devez donc passer le mot de passe dans un paramètre de ligne de commande.

  1. Copiez le mot de passe dont vous avez besoin à partir du fichier .publishsettings que vous avez téléchargé précédemment pour le site web intermédiaire. Le mot de passe est la valeur de l’attribut userPWD de l’élément Web Deploy publishProfile .

    Mot de passe Web Deploy

  2. Dans la page de démarrage de Windows 8, recherchez l’invite de commandes développeur pour VS2012, puis cliquez sur l’icône pour ouvrir l’invite de commandes. (Vous n’avez pas besoin de l’ouvrir en tant qu’administrateur cette fois, car vous ne déployez pas sur IIS sur l’ordinateur local.)

  3. Entrez la commande suivante à l’invite de commandes, en remplaçant le chemin d’accès au fichier solution par le chemin d’accès à votre fichier solution et le mot de passe par votre mot de passe :

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Notez que cette ligne de commande inclut un paramètre supplémentaire : /p:AllowUntrustedCertificate=true. Comme ce didacticiel est écrit, la AllowUntrustedCertificate propriété doit être définie lorsque vous publiez sur Azure à partir de la ligne de commande. Lorsque le correctif de ce bogue est publié, vous n’aurez pas besoin de ce paramètre.

  4. Ouvrez un navigateur et accédez à l’URL de votre site intermédiaire, puis cliquez sur la page À propos pour vérifier que le déploiement a réussi.

    Comme vous l’avez vu précédemment pour l’environnement de test, vous devrez peut-être créer des étudiants pour afficher des statistiques sur la page About .

Déployer en production

Le processus de déploiement en production est similaire au processus de préproduction.

  1. Copiez le mot de passe dont vous avez besoin à partir du fichier .publishsettings que vous avez téléchargé précédemment pour le site web de production.

  2. Ouvrez l’invite de commandes développeur pour VS2012.

  3. Entrez la commande suivante à l’invite de commandes, en remplaçant le chemin d’accès au fichier solution par le chemin d’accès à votre fichier solution et le mot de passe par votre mot de passe :

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Pour un site de production réel, s’il y avait également une modification de base de données, vous copiez généralement le fichier app_offline.htm sur le site avant le déploiement et supprimez-le après le déploiement réussi.

  4. Ouvrez un navigateur et accédez à l’URL de votre site intermédiaire, puis cliquez sur la page À propos pour vérifier que le déploiement a réussi.

Résumé

Vous avez maintenant déployé une mise à jour d’application à l’aide de la ligne de commande.

Capture d’écran montrant la page About affichant les statistiques du corps de l’étudiant.

Dans le tutoriel suivant, vous verrez un exemple d’extension du pipeline de publication web. L’exemple vous montre comment déployer des fichiers qui ne sont pas inclus dans le projet.