FAQ sur le déploiement de projet d'application Web pour Visual Studio et ASP.NET

Cette rubrique répond le forum aux questions sur le déploiement des projets d'application Web à l'aide de les produits suivants :

Plusieurs réponses vous instruisent modifier les paramètres de déploiement en modifiant le fichier de profil de publication (.pubxml) ou le fichier de wpp.targets. Pour plus d'informations sur la procédure à suivre, consultez Comment : modifier des paramètres de déploiement dans les fichiers de profil de publication (pubxml) et le fichier .wpp cible dans les projets Web Visual Studio.

Cette rubrique contient les sections suivantes :

  • Puis-je exclure des fichiers ou des dossiers spécifiques du déploiement ?

  • Pourquoi tous les fichiers du dossier mes de projet n'obtiennent-ils pas déployés ?

  • Puis -je inclure des fichiers spécifiques ou des dossiers en dehors de mon dossier du projet ?

  • Comment faire pour désactiver la transformation de Web.config ?

  • Quand dois -je utiliser le Web déployer des paramètres au lieu des transformations du fichier Web.config ?

  • Comment faire pour déployer une première base de données de code sans utiliser les transferts ?

  • Comment puis -je déboguer un package de déploiement ou processus de publication ?

  • Puis-je utiliser le service de l'agent distant via HTTPS avec une publication en un clic ?

  • Puis-je utiliser le paramètre de fournisseur tempAgent de Web Deploy avec une publication en un clic ?

  • La publication en un clic peut-elle créer un package à des fins d'archivage ?

  • Puis-je spécifier qu'un package doit être créé chaque fois que je génère une solution ?

  • Comment faire pour conserver mon domaine d'application de redémarrer plusieurs fois pendant une longue processus de déploiement ?

  • Pourquoi est-ce que j'obtiens une erreur indiquant qu'ASP.NET 4 est obligatoire alors que ce dernier est déjà installé ?

  • Pourquoi le déploiement échoue-t-il lorsqu'il tente d'exécuter les commandes de base de données CREATE USER ou CREATE ROLE ?

  • Puis-je créer un package unique et l'utiliser pour réaliser un déploiement à la fois sur IIS 6 et sur IIS 7 ?

  • Pourquoi le déploiement distant échoue-t-il pour les fichiers volumineux, bien que le déploiement local réussisse ?

Puis-je exclure des fichiers ou des dossiers spécifiques du déploiement ?

Vous pouvez limiter les fichiers qui sont déployés en sélectionnant les options Uniquement les fichiers nécessaires à l'exécution de cette application ou Tous les fichiers de ce projet sous l'onglet Package/Publication Web. Si vous sélectionnez l'option Tous les fichiers de ce projet, vous pouvez cliquer avec le bouton droit sur un fichier dans l'Explorateur de solutions et sélectionner Exclure du projet pour empêcher qu'il soit déployé. Pour plus d'informations sur les fichiers sont exclus lorsque vous utilisez les options Classe uniquement nécessaire pour exécuter cette application ou Tous les fichiers dans ce projet , consultez Pourquoi tous les fichiers du dossier mes de projet n'obtiennent-ils pas déployés ?.

Si ces options ne sont pas suffisamment flexibles pour vous, modifiez le .pubxml ou le fichier de .wpp.targets et ajoutez un élément d' ExcludeFilesFromDeployment ou un élément d' ExcludeFoldersFromDeployment (ou les deux) dans l'élément d' PropertyGroup . Dans chaque élément, vous pouvez spécifier un nom unique, ou vous pouvez spécifier plusieurs noms délimités par des points-virgules (;), comme indiqué dans l'exemple suivant :

<PropertyGroup">
  <ExcludeFilesFromDeployment>
    File1.aspx;File2.aspx
  </ExcludeFilesFromDeployment>
  <ExcludeFoldersFromDeployment>
    Folder1;Folder2
  </ExcludeFoldersFromDeployment>
</PropertyGroup> 

Pour plus d'informations, consultez les publications suivantes sur le blog de Sayed Hashimi :

  1. Outil de déploiement Web (MSDeploy) : Module de génération y compris les fichiers supplémentaires ou des fichiers spécifiques d'exclusion

  2. Outil de déploiement Web (MSDeploy) : Excluez procédure les fichiers du package en fonction de la configuration

Retour au début

Pourquoi tous les fichiers du dossier mes de projet n'obtiennent-ils pas déployés ?

Dans le menu Empaquetez/publier des paramètres choisi Projet pour ouvrir l'onglet empaquetez/publiez le Web de la fenêtre Propriétés du projet . Une liste déroulante dans la section étiquetée Éléments à déployer (s'applique à toutes les méthodes de déploiement) propose trois options :

  • Uniquement les fichiers nécessaires à l'exécution de cette application. Valeur par défaut. Tests de Visual Studio pour déterminer quels fichiers sont requis pour l'application s'exécute correctement. Par exemple, cela inclut des assemblys dans le dossier Bin, les fichiers générés pendant la génération, et les fichiers marqués comme Contenu. Pour déterminer si un fichier est marqué comme Contenu, sélectionnez le fichier dans Explorateur de solutions, puis vérifiez la propriété Action de génération du fichier dans la fenêtre Propriétés . Vous pouvez modifier la valeur Action de génération par Contenu pour provoquer le fichier soit déployé, ou modifiez -le par un autre élément, tel que aucun, pour empêcher le fichier soit déployé. Certains types de fichiers qui sont automatiquement définies à Contenu incluent .master, .svc, .ashx, .asax, .skin, .browser, .config, sitemap de .and. Un fichier doit être inclus dans le projet afin d'avoir une propriété Action de génération .

  • Tous les fichiers de ce projet. Visual Studio déploie tous les fichiers inclus dans le projet, indépendamment de leurs valeurs de propriété Action de génération .

  • Tous les fichiers du dossier du projet. Visual Studio déploie tous les fichiers indépendamment qui sont dans le dossier du projet et les sous-dossiers, s'ils sont inclus dans le projet ou leurs valeurs de propriété Action de génération .

Si vous êtes familiarisé avec la syntaxe de MSBuild, vous pouvez rechercher des détails sur la façon dont ces trois options s'exécutent dans les fichiers suivants :

  • Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets

  • Microsoft.Web.Publishing.AllFilesInTheProject.targets

  • Microsoft.Web.Publishing.AllFilesInProjectFolder.targets

Ces fichiers se trouvent à l'emplacement suivant dans un ordinateur sur lequel Visual Studio est installé :

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\

Retour au début

Puis -je inclure des fichiers spécifiques ou des dossiers en dehors de mon dossier du projet ?

Oui. Pour plus d'informations sur la procédure à suivre, consultez Générez le module y compris les fichiers supplémentaires ou des fichiers spécifiques d'exclusion sur le blog de Sayed Hashimi.

Retour au début

Comment faire pour désactiver la transformation de Web.config ?

Vous disposez de plusieurs options :

  • Commentez les transformations spécifiques dans le fichier de transformation Web.config.

  • Renommez le fichier de transformation à un nom qui ne correspond pas à une configuration de build définie ou un profil de publication. Par exemple, vous pouvez modifier Web.Debug.config en Web.Debugx.config (Vous devrez peut-être renommez le fichier en dehors de Visual Studio.)

  • Supprimez le fichier de transformation. Si vous avez personnalisé le fichier, les personnalisations seront perdues.

  • Modifiez le fichier de .pubxml ou le fichier de .wpp.targets en ajoutant un élément d' TransformWebConfigEnabled à l'élément d' PropertyGroup et en définissant sa valeur à False.

Retour au début

Quand dois -je utiliser le Web déployer des paramètres au lieu de la transformation Web.config ?

Le Web deploy les paramètres sont plus complexe pour installer que les transformations de Visual Studio Web.config mais sont très flexible. Le Web deploy les paramètres sont complexes pour installer car ils peuvent automatiser d'autres tâches de déploiement, telles que la mise à jour des scripts de base de données et les paramètres IIS. Le Web deploy les paramètres sont utiles pour la transformation de Web.config lorsque vous créez un package de déploiement et lorsque vous créez le package vous ne connaissez pas les valeurs qui doivent entrer dans le fichier Web.config déployé. Le Web deploy des paramètres vous avez de spécifier des valeurs pour les paramètres lorsque le package est installé, pas au même moment où il est créé. Cela est particulièrement utile dans les environnements d'entreprise, où il est courant pour les personnes à être chargé de créer et d'installer des packages de déploiement. Par exemple, le développeur qui crée un module peut ne pas connaître certains mots de passe qui doivent être dans le fichier Web.config. L'administrateur de calcul qui installe le package peut écrire valeurs lorsque le package est installé. Pour plus d'informations, consultez Paramétrage VS. la transformation de Web.config sur le blog et le Comment : utiliser des paramètres de déploiement Web dans un Package de déploiement Webde Vishal Joshi.

Retour au début

Comment faire pour déployer une première base de données de code sans transferts ?

Lorsque vous implémentez classe de contexte de code Entity Framework une première pour accéder à une base de données, l'onglet Paramètres de l'assistant publiez le Web affiche une case à cocher qui vous permet d'utiliser les premiers transferts de code pour automatiser le déploiement pour cette base de données. Mais si vous accédez à la base de données à l'aide de la première API de code, et le code d'abord n'est pas utilisé pour créer la base de données, vous ne pouvez pas utiliser les transferts pour la déployer. Dans ce scénario, ce que vous souhaitez est la case à cocher base de données de mise à jour qui vous permet de déployer une base de données SQL Server que vous n'utilisez pas un premier contexte de code pour.

Pour déployer une première base de données de code sans utiliser les transferts

  1. Dans Visual Studio, si vous avez l'assistant publiez le Web ouvert, clôturez-le.

  2. Dans le fichier Web.config de l'application, créez un élément supplémentaire de la chaîne de connexion pour la base de données. Donnez à ce nouvel élément de chaîne de connexion un nom qui ne correspond pas au nom de classe de contexte ou le nom de classe complet.

  3. Générez le projet, puis ouvrez l'assistant publiez le Web et sélectionnez le profil que vous souhaitez utiliser.

  4. Sélectionnez l'onglet Paramètres.

    Vous consultez maintenant deux entrées de la base de données dans la section Bases de données de l'onglet, une pour la première classe de contexte de code et une pour la nouvelle chaîne de connexion dans le fichier Web.config.

  5. Dans l'entrée de la première classe de contexte de code, entrez la chaîne de connexion à l'application peut utiliser au moment de l'exécution, et désactivez la case à cocher appliquez les premiers transferts de code .

  6. Dans l'entrée de la nouvelle chaîne de connexion du fichier Web.config, entrez la chaîne de connexion qui doit être utilisée pour effectuer des modifications de schéma pendant le déploiement, puis sélectionner mettez à jour la base de données.

    Pour plus d'informations sur l'écriture des paramètres de déploiement de base de données, consultez Comment : déployer un projet d'application Web à l'aide de la publication en un clic dans Visual Studio.

Retour au début

Comment puis -je déboguer un package de déploiement ou processus de publication ?

Le niveau de commentaires pour l'empaquetage et la publication est contrôlé par le même paramètre Visual Studio que celui qui détermine les commentaires MSBuild. Dans le menu principal, sélectionnez Outils, puis Options. Dans la boîte de dialogue Options, développez Projets et solutions, puis sélectionnez Générer et exécuter. La liste déroulante Commentaires relatifs à la sortie de génération du projet MSBuild s'affiche afin de vous permettre de sélectionner l'une des options suivantes :

  • Silencieux

  • Minimal

  • Normal

  • Détaillé

  • Diagnostic

Ces options correspondent à ce que vous pouvez définir à l'aide de l'indicateur /verbosity ou /v lorsque vous exécutez MSBuild à partir de la ligne de commande. Pour plus d'informations sur les balises de ligne de commande MSBuild, consultez Référence de la ligne de commande MSBuild.

Retour au début

Puis-je utiliser le service de l'agent distant via HTTPS avec une publication en un clic ?

Non. Lorsque vous entrez une URL HTTPS dans la zone de texte URL de service de la boîte de dialogue Publier le site Web, Visual Studio utilise automatiquement le service Windows Management. Si vous souhaitez utiliser HTTPS, nous vous recommandons d'utiliser le service Windows Management.

Retour au début

Puis-je utiliser le paramètre de fournisseur tempAgent de Web Deploy avec une publication en un clic ?

Non. Si vous souhaitez utiliser le paramètre de fournisseur tempAgent, vous devez utiliser la ligne de commande de Web Deploy ou le fichier deploy.cmd généré par Visual Studio lorsqu'il crée un package de déploiement.

Retour au début

La publication en un clic peut-elle créer un package à des fins d'archivage ?

Vous pouvez créer deux profils de publication, un pour publier le projet et un pour créer le module d'enregistrement. Ensuite après avoir publié le projet vous devez simplement basculer vers le profil de publication qui crée le package et cliquez sur Publier de nouveau. Pour plus d'informations sur la création d'un profil de publication qui crée un package, consultez le Comment : créer un package de déploiement Web dans Visual Studio.

Retour au début

Puis-je spécifier qu'un package doit être créé chaque fois que je génère une solution ?

Oui. Modifiez le fichier projet et ajoutez un élément DeployOnBuild dans l'élément PropertyGroup approprié. (Pour plus d'informations sur la modification du fichier projet, consultez Comment : Paramètres de déploiement de modification du fichier projet.) L'exemple suivant illustre un élément PropertyGroup relatif à la configuration de build Release :

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DeployOnBuild>True</DeployOnBuild>
  <!-- Additional settings -->
</PropertyGroup>

Si vous apportez cette modification dans le fichier projet, vérifiez que l'élément d' PropertyGroup que vous mettez à jour est placé avant les instructions d' Import dans le fichier projet. (La propriété d' DeployOnBuild doit être définie avant Import pour Microsoft.Web.Publishing.targets.)

L'élément DeployDefaultTarget doit également avoir la valeur Package. Toutefois, il est facultatif, car il s'agit de la valeur par défaut.

C'est tout ce que vous devez faire pour que la création du package automatique lorsque vous générez la solution à partir de la ligne de commande. Pour faire fonctionner la création automatique de module également lorsque vous générez la solution Visual Studio, ajoutez le code suivant au fichier projet après Import pour Microsoft.CSharp.targets ou Microsoft.VisualBasic.targets:

<PropertyGroup> 
  <BuildDependsOn> 
    $(BuildDependsOn); 
    Package 
  </BuildDependsOn> 
</PropertyGroup>

Retour au début

Puis-je configurer des règles de délégation afin que les développeurs puissent réaliser des déploiements sur des serveurs intermédiaires sans modifier les paramètres IIS ?

Ceci est possible à partir d'IIS 7. Pour plus d'informations sur la délégation d'autorisations de déploiement, consultez les rubriques suivantes :

Retour au début

Comment faire pour conserver mon domaine d'application de redémarrer plusieurs fois pendant une longue processus de déploiement ?

Si vous devez exécuter des Commandes de copie plusieurs de déployer votre application et qu'il existe un intervalle de temps significatif entre elles, le domaine d'application peut redémarrer entre les différentes Commandes. Pour empêcher un redémarrage, ajouter un élément de httpRuntime, élément (Schéma des paramètres ASP.NET) au fichier Web.config et définir l'attribut d' waitChangeNotification le nombre de secondes d'attente pour s'assurer que le domaine d'application ne redémarre pas entre les différentes Commandes. Par exemple, si vous souhaitez spécifier un temps d'attente de cinq secondes, l'élément httpRuntime peut se présenter comme dans l'exemple suivant.

<configuration>
  <system.web>
        <compilation debug="false" targetFramework="4.0" />
    <httpRuntime 
      waitChangeNotification="5" />
  </system.web>
</configuration>

Si vous souhaitez garantir que le domaine d'application redémarre après un intervalle défini écoulé depuis l'exécution de la première commande de copie, ajoutez un attribut maxWaitChangeNotification à l'élément httpRuntime et affectez-lui le nombre de secondes d'attente maximal. Par exemple, un fichier Web.config qui contient l'élément httpRuntime avec les deux attributs peut se présenter comme dans l'exemple suivant.

<configuration>
  <system.web>
    <httpRuntime 
      waitChangeNotification="5"
      maxWaitChangeNotification="10" />
  </system.web>
</configuration>

Retour au début

Pourquoi est-ce que j'obtiens une erreur indiquant qu'ASP.NET 4 est obligatoire alors que ce dernier est déjà installé ?

Pour permettre le déploiement d'une application Web ASP.NET 4, ASP.NET 4 doit être inscrit auprès d'IIS sur le serveur de destination. De plus, le pool d'applications du site Web IIS sur lequel vous effectuez le déploiement doit être assigné au .NET Framework 4. Si l'une ou l'autre de ces conditions est réunie, l'une des erreurs suivantes est susceptible de s'afficher lorsque vous tentez le déploiement :

  • Le pool d'applications .NET 4.0 par défaut n'existe pas ou l'application n'a pas pu être ajoutée. Vérifiez qu'ASP.NET 4.0 est installé sur cet ordinateur.

  • La propriété « managedRuntimeVersion » du pool d'applications que vous tentez d'utiliser a pour valeur « v2.0 ». La valeur requise pour cette application est « v4.0 ».

ASP.NET 4 est installé lorsque vous installez Visual Studio. Toutefois, le processus d'installation n'inscrit pas automatiquement ASP.NET 4 auprès d'IIS, et les sites Web IIS existants ne sont pas assignés automatiquement à des pools d'applications .NET.4. Pour résoudre ce problème, inscrivez ASP.NET auprès d'IIS et affectez au pool d'applications du site Web IIS de destination la version du .NET Framework qui est requise par le package. Pour plus d'informations sur l'inscription auprès d'IIS, consultez ASP.NET IIS Registration Tool (Aspnet_regiis.exe).

Retour au début

Puis-je créer un package unique et l'utiliser pour réaliser un déploiement à la fois sur IIS 6 et sur IIS 7 ?

Si l'une des conditions suivantes est vraie, vous pouvez utiliser le même package pour déployer à IIS 6 et sur IIS 7 :

  • Vous ne sélectionnez pas l'option Inclure tous les paramètres IIS tels qu'ils sont configurés dans le Gestionnaire des services IIS sous l'onglet Package/Publication Web.

  • Vous sélectionnez l'option Inclure tous les paramètres IIS tels qu'ils sont configurés dans le Gestionnaire des services IIS et vous créez le package sur IIS 6.

Vous ne pouvez pas déployer un package sur IIS 6 qui a été créé sur IIS 7 si vous sélectionnez l'option Inclure tous les paramètres IIS tels qu'ils sont configurés dans le Gestionnaire des services IIS.

Retour au début

Pourquoi le déploiement distant échoue-t-il pour les fichiers volumineux, bien que le déploiement local réussisse ?

En général lorsque vous déployez des serveurs de production vous déployez dans un pare-feu. Si vous obtenez des erreurs de fin de flux sur des fichiers volumineux, vérifiez les paramètres du pare-feu. Si c'est la cause de l'échec de déploiement, vous pouvez voir les messages d'erreur tels que l'exemple suivant sur l'ordinateur source :

Warning: Retrying the sync because a socket error (10054) occurred.

Retrying operation 'Serialization' on object MSDeploy.contentPath (sourcePath).

Sur le serveur de destination, vous pouvez voir les messages d'erreur tels que l'exemple suivant :

System.Net.HttpListenerException: An operation was attempted on a nonexistent network connection

Retour au début

Voir aussi

Concepts

Organigramme des informations relatives au déploiement Web pour Visual Studio et ASP.NET