1. Introduction du problème Au cours du processus de développement du site Web VS2005, la publication de sites Web a toujours été un problème. Le site Web créé par VS2005 possède plusieurs répertoires par défaut : App_Code, App_Data, App_Themes...
S'il s'agit d'un fichier cs/vb, comme la classe UploadFile.cs UploadFile, ce fichier de classe n'a pas de fichier aspx visible, alors ce fichier doit être placé dans le répertoire App_Code, sinon cette classe est inaccessible dans le site VS2005. Il suffit de le mettre, mais lors de la compilation (mon VS2005 est la version Team, la génération ne répond pas. J'ai l'impression de vérifier à nouveau le code et je ne peux utiliser que le site de publication pour précompiler. Je ne sais pas à quoi ressemblent les autres versions .) Le problème se pose. Après avoir sélectionné le site Web de publication, il vous permettra de choisir comment publier. Généralement, vous pouvez choisir la valeur par défaut. De cette façon, le nombre de dll générées sera généralement plus petit. , App_Code.dll dans le répertoire bin App_Web_ (caractères aléatoires).dll, dll référencée et autres fichiers. Le problème réside ici. Si vous souhaitez créer un programme sans virtualisation, ne serait-il pas possible que deux App_Code.dll doive être placé dans le répertoire bin ? N'y aura-t-il pas de conflit ? De plus, si le programme change une fois et doit être republié, c'est tout. Regardez les bonnes choses que VS2005 a faites. Herites="MyCodeGif, App_Web_vf3ukhnv" était à l'origine un fichier MyCodeGif.aspx et un fichier MyCodeGif.aspx.cs. Maintenant, le fichier MyCodeGif.aspx hérite de MyCodeGif, App_Web_vf3ukhnv. On peut voir que MyCodeGif est une classe définie par MyCodeGif.aspx. cs. App_Web_vf3ukhnv est le nom d'un fichier dll dans le dossier bin. Si vous essayez de le publier à nouveau, une question plus gênante se posera. Pourquoi la page MyCodeGif.aspx est-elle héritée de MyCodeGif, App_Web_qwdwqd ? Les noms des assemblys compilés sont différents !
2. La relation entre les pages et les classes dans ASP.Net
Dans ASP.Net, les pages peuvent hériter des classes et avoir plusieurs héritages. Par exemple
Le fichier de page MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>MyCodeGif.aspx.cs ressemble à ceci
utiliser le système ;
en utilisant System.Data ;
en utilisant System.Configuration ;
en utilisant System.Collections ;
en utilisant System.Web ;
en utilisant System.Web.Security ;
en utilisant System.Web.UI ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.WebControls.WebParts ;
en utilisant System.Web.UI.HtmlControls ;
en utilisant FreeCodeNum ;
classe partielle publique MyCodeGif : System.Web.UI.Page
{
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
//.....logique
}
}
On voit que la page MyCodeGif.aspx hérite de la classe MyCodeGif
et peut également être héritée de cette manière
Fichier d'échange MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>
Voici à quoi ressemble MyCodeGif.aspx.cs
utiliser le système ;
en utilisant System.Data ;
en utilisant System.Configuration ;
en utilisant System.Collections ;
en utilisant System.Web ;
en utilisant System.Web.Security ;
en utilisant System.Web.UI ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.WebControls.WebParts ;
en utilisant System.Web.UI.HtmlControls ;
en utilisant FreeCodeNum ;
classe partielle publique MyCodeGif : PageBase
{
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
//.....logique
}
}
PageBase.cs comme ça
utiliser le système ;
en utilisant System.Web ;
en utilisant System.Collections ;
/**//// <résumé>
/// Description récapitulative de PageBase
/// </summary>
classe publique PageBase : System.Web.UI.Page
{
publicPageBase()
{
}
}
Comme mon fichier de page MyCodeGif.aspx, je peux même
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="PageBase" %>C'est-à-dire que la page hérite directement de la classe PageBase.
Conclusion : les pages ASP.Net peuvent hériter des sous-classes étendues [Hérité de la classe parent de la classe System.Web.UI.Page]
3. Solution : Vous pouvez également personnaliser le nom de l'assembly dans VS2005, c'est-à-dire lors de la création de l'heure du projet. , pas l'heure du site Web. En d’autres termes, une fois le site Web que vous avez créé écrit, vous pouvez recréer un projet puis recompiler le code du site Web. Vous devrez peut-être modifier l'héritage du fichier aspx après l'avoir terminé, mais vous n'aurez peut-être pas besoin de le modifier. Cela dépend de la façon dont vous l'enregistrez, car l'héritage du fichier aspx n'est lié qu'au nom de la classe (s'il existe). un espace de noms, l'espace de noms doit également être spécifié). Le fichier de page MyCodeGif.aspx peut être modifié en
<%@ Page Language="C#" AutoEventWireup="true" Inherits="PageBase" %>
Supprimez CodeFile="MyCodeGif.aspx.cs" à l'intérieur.
De cette façon, le site Web peut être publié de la même manière que VS2003. Le processus est peut-être un peu compliqué, mais je pense que c'est très utile pour une maintenance ultérieure. Après tout, je suis habitué à VS2003 et je peux faire les mêmes programmes sans virtualisation qu'en 2003.
Texte complet. J'espère que cela pourra être utile à tout le monde.
Auteur : Xie Ping, Sunset Track 2006-5-27