Compilation des projets d'application Web

Mise à jour : novembre 2007

Le type de projet d'application Web constitue une solution alternative au type de projet de site Web introduit dans Microsoft Visual Studio 2005. Le modèle de projet d'application Web repose sur le modèle de projet Web Visual Studio .NET 2003. Il été créé pour simplifier la conversion des projets Web Visual Studio .NET 2003 vers des versions ultérieures de Visual Studio et pour diminuer la nécessité de modifier le code. Les fichiers de code du projet sont précompilés dans un assembly unique à l'aide de Microsoft Build Engine (MSBuild). Les pages Web ASP.NET (.aspx) et les contrôles utilisateur (.ascx) sont compilés dynamiquement sur le serveur par le compilateur ASP.NET.

Remarque :

Vous pouvez créer des projets d'application Web ASP.NET à l'aide de Visual Studio ou de Visual Web Developer Express.

Modèle de compilation

Le modèle de compilation des projets d'application Web ressemble à celui de Visual Studio .NET 2003. Tous les fichiers de code (fichiers autonomes, code-behind et de classe de concepteur) du projet sont précompilés dans un assembly unique. Par défaut, cet assembly est généré et conservé dans le dossier Bin. Ce modèle de compilation permettant de créer un assembly unique, vous pouvez spécifier des attributs, tels le nom de l'assembly et la version. Vous pouvez également spécifier l'emplacement de l'assembly de sortie.

Un projet d'application Web est défini par un fichier projet et non par un dossier de projet, comme pour un projet de site Web. Le fichier projet contient les fichiers qui sont inclus dans le projet, ainsi que les références d'assembly et d'autres paramètres de métadonnées du projet. Les fichiers situés dans le dossier du projet qui ne sont pas définis dans le fichier projet ne sont pas compilés dans le cadre du projet d'application Web. Les paramètres du projet qui sont ajoutés et modifiés via Visual Studio ou Visual Web Developer Express sont référencés dans le fichier projet (.*proj) qui est généré pour chaque projet.

Pour exécuter et déboguer des pages, vous devez compiler le projet d'application Web complet. La génération du projet d'application Web complet peut être rapide, car Visual Studio et Visual Web Developer Express utilisent un modèle de génération incrémentiel qui génère uniquement les fichiers qui ont été modifiés.

Pour plus d'informations, consultez Vue d'ensemble des projets d'application Web.

Précompilation de fichiers de classe

Les projets d'application Web utilisent MSBuild pour précompiler les fichiers de classe. Ces fichiers de classe sont compilés dans un assembly unique. Par défaut, ils sont placés dans le dossier Bin. Vous pouvez étendre et personnaliser le processus de compilation à l'aide des règles d'extensibilité MSBuild standard. Pour plus d'informations, consultez Vue d'ensemble de MSBuild.

Le tableau suivant décrit les types de fichiers de classe du projet d'application Web qui sont compilés en un seul assembly.

Type de fichier de classe

Description

Autonome

Fichiers de classe que vous pouvez créer et ajouter au dossier Bin.

Code-behind

Code défini par l'utilisateur qui est en rapport direct avec les fichiers de contenu.

Concepteur

Code qui est généré automatiquement. Vous ne devriez pas modifier le fichier .designer.

Personnalisation des options de compilation

Vous pouvez spécifier le nom, la version et d'autres informations de l'assembly de sortie en utilisant les éléments de la page de propriétés Application de la fenêtre Concepteur de projets. Utilisez la page Générer de la fenêtre Concepteur de projets pour spécifier la configuration de génération du projet. Par exemple, vous pouvez spécifier la méthode de gestion des erreurs et d'autres informations sur la sortie d'assembly. En outre, vous pouvez ajouter des étapes avant et après génération à exécuter pendant la compilation en définissant des valeurs dans la page de propriétés Événements de génération. Pour plus d'informations sur les pages de propriétés, consultez Projets, éléments de l'interface utilisateur.

Définition de la propriété Action de génération

Par défaut, MSBuild compile uniquement les fichiers de classe de projets d'application Web lorsque la propriété Action de génération a la valeur Compiler. Toutefois, si un projet d'application Web inclut des fichiers de classe dans le dossier App_Code, ces fichiers de classe sont également compilés par le compilateur ASP.NET. Ce principe s'applique même si l'action de génération n'a pas explicitement la valeur Compiler.

Remarque :

Le dossier App_Code existe pour les projets de site Web dans Visual Studio 2005. Ce dossier n'est généralement pas inclus dans les projets d'application Web. Pour plus d'informations sur le dossier App_Code, consultez Dossiers de code partagé dans des sites Web ASP.NET.

Compilation Dynamique

Bien que les fichiers de code du projet soient précompilés dans un assembly unique à l'aide de MSBuild, les pages Web ASP.NET (.aspx) et les contrôles utilisateur (.ascx) d'un projet d'application Web sont compilés de manière dynamique sur le serveur par le compilateur ASP.NET. Dans un projet d'application Web, les pages Web et les contrôles utilisateur peuvent utiliser les attributs CodeBehind et Inherits dans leur directive @ Page ou @ Control. L'attribut CodeBehind fait référence au fichier code-behind à utiliser. L'attribut Inherits pointe vers un espace de noms et une classe du fichier code-behind. 

Dans les projets d'application Web, vous pouvez apporter des modifications restreintes aux pages Web ASP.NET de votre site après leur compilation et déploiement. Par exemple, vous pouvez modifier la disposition des contrôles, les couleurs, les polices et les autres aspects d'apparence des pages. Lorsque le site est exécuté pour la première fois, ASP.NET effectue une compilation supplémentaire pour créer la sortie à partir du balisage.

Vous pouvez déclarer un contrôle statistiquement dans le fichier code-behind à condition que vous le déclariez public ou protégé. Étant donné que la page .aspx hérite du fichier code-behind, elle utilisera cette déclaration et n'en déclarera pas une nouvelle. Le déplacement de la déclaration d'un contrôle vers le fichier code-behind est utile dans les situations suivantes :

  • Lorsque le type du contrôle doit être dérivé d'un type standard.

  • Lorsque vous souhaitez que la portée du contrôle soit différente de la portée par défaut. La portée fait référence au niveau d'accessibilité, tel que public, private, internal, protected et protected internal.

  • Lorsque vous souhaitez ajouter des attributs de métadonnées à la déclaration du contrôle.

  • Lorsque vous souhaitez écrire des commentaires de code XML pour la déclaration du contrôle.

Pour plus d'informations sur l'ajout de contrôles, consultez Comment : ajouter des contrôles à une page Web ASP.NET par programme.

Déploiement

Dans la mesure où tous les fichiers de classe sont compilés dans un assembly unique, seul cet assembly doit être déployé, avec les fichiers .aspx et .ascx et d'autres fichiers de contenu statique. Dans ce modèle, les fichiers .aspx ne sont pas compilés tant qu'ils ne sont pas demandés par le navigateur.

Toutefois, vous pouvez également compiler les fichiers .aspx et les inclure dans un assembly unique en vue du déploiement. Pour ce faire, vous pouvez utiliser Web Deployment Projects, un complément téléchargeable de Visual Studio. Pour télécharger ce complément, consultez Visual Studio 2005 Web Deployment Projects sur le site Web du centre de développement ASP.NET. Pour plus d'informations sur les méthodes de déploiement des projets d'application Web, consultez Comment : publier des projets d'application Web.

Voir aussi

Concepts

Vue d'ensemble de MSBuild

Vue d'ensemble des projets d'application Web

Dossiers de code partagé dans des sites Web ASP.NET

Vue d'ensemble des pages Web ASP.NET

Référence

Événements de génération, page du Concepteur de projets (C#)

Générer, page du Concepteur de projets (C#)

@ Page

Autres ressources

Concepts MSBuild