1. Problemeinführung Während des Entwicklungsprozesses der VS2005-Website war die Veröffentlichung von Websites immer ein Problem. Die von VS2005 erstellte Website verfügt über mehrere Standardverzeichnisse: App_Code, App_Data, App_Themes ...
Wenn es sich um eine cs/vb-Datei handelt, z. B. die UploadFile.cs-Klasse, verfügt diese Klassendatei nicht über eine sichtbare ASPX-Datei. Diese Datei muss dann im Verzeichnis App_Code abgelegt werden, da sonst auf der VS2005-Website nicht auf diese Klasse zugegriffen werden kann Fügen Sie es einfach ein, aber beim Kompilieren (mein VS2005 ist die Team-Version) reagiert die Generierung nicht. Es fühlt sich an, als würde ich den Code noch einmal überprüfen, und ich kann die Veröffentlichungswebsite nur zum Vorkompilieren verwenden. Ich weiß nicht, wie andere Versionen aussehen .) Nach der Auswahl der Veröffentlichungswebsite können Sie die Standardeinstellung auswählen. Nach der Veröffentlichung wird normalerweise App_Code.compiliert , App_Code.dll im bin-Verzeichnis, App_Web_ (zufällige Zeichen).dll, referenzierte DLL und andere Dateien. Das Problem liegt hier. Wenn Sie ein virtualisierungsfreies Programm erstellen möchten, müssten dann nicht zwei App_Code.dlls im bin-Verzeichnis abgelegt werden? Wird es keinen Konflikt geben? Auch wenn sich das Programm einmal ändert und erneut veröffentlicht werden muss, ist das erledigt. Schauen Sie sich die guten Dinge an, die VS2005 geleistet hat. inherits="MyCodeGif, App_Web_vf3ukhnv" war ursprünglich eine MyCodeGif.aspx-Datei und eine MyCodeGif.aspx.cs-Datei. Jetzt erbt die MyCodeGif.aspx-Datei von MyCodeGif, App_Web_vf3ukhnv. cs. App_Web_vf3ukhnv ist der Name einer DLL-Datei im bin-Ordner. Wenn Sie versuchen, es erneut zu veröffentlichen, stellt sich die Frage: Warum wird die Seite MyCodeGif.aspx von MyCodeGif, App_Web_qwdwqd, geerbt? Die Namen der kompilierten Assemblys sind unterschiedlich!
2. Die Beziehung zwischen Seiten und Klassen in ASP.Net
In ASP.Net können Seiten von Klassen erben und über Mehrfachvererbung verfügen. Zum Beispiel
MyCodeGif.aspx-Seitendatei
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>MyCodeGif.aspx.cs sieht so aus
Verwenden des Systems;
Verwenden von System.Data;
Verwenden von System.Configuration;
Verwenden von System.Collections;
mit System.Web;
mit System.Web.Security;
mit System.Web.UI;
mit System.Web.UI.WebControls;
mit System.Web.UI.WebControls.WebParts;
mit System.Web.UI.HtmlControls;
mit FreeCodeNum;
öffentliche Teilklasse MyCodeGif: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//.....Logik
}
}
Es ist ersichtlich, dass die Seite MyCodeGif.aspx von der Klasse MyCodeGif erbt
und auch auf diese Weise geerbt werden kann
MyCodeGif.aspx-Seitendatei
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>
So sieht MyCodeGif.aspx.cs aus
Verwenden des Systems;
Verwenden von System.Data;
Verwenden von System.Configuration;
Verwenden von System.Collections;
mit System.Web;
mit System.Web.Security;
mit System.Web.UI;
mit System.Web.UI.WebControls;
mit System.Web.UI.WebControls.WebParts;
mit System.Web.UI.HtmlControls;
mit FreeCodeNum;
öffentliche Teilklasse MyCodeGif: PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
//.....Logik
}
}
PageBase.cs so
Verwenden des Systems;
mit System.Web;
using System.Collections;
/**////
/// Zusammenfassende Beschreibung von PageBase
///
öffentliche Klasse PageBase: System.Web.UI.Page
{
publicPageBase()
{
}
}
Wie meine Seitendatei MyCodeGif.aspx kann ich sogar
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="PageBase" %>Das heißt, die Seite erbt direkt von der PageBase-Klasse.
Fazit: ASP.Net-Seiten können von erweiterten Unterklassen
3 erben. Lösung: Sie können den Assemblynamen auch in VS2005 anpassen, also beim Erstellen von Project Time , nicht Website-Zeit. Mit anderen Worten: Nachdem die von Ihnen erstellte Website geschrieben wurde, können Sie ein Projekt neu erstellen und dann den Website-Code neu kompilieren. Möglicherweise müssen Sie die Vererbung der ASPX-Datei nach der Fertigstellung ändern, aber möglicherweise nicht. Dies hängt davon ab, wie Sie sie speichern, da die Vererbung der ASPX-Datei nur mit dem Klassennamen zusammenhängt (falls vorhanden). ein Namensraum, muss auch der Namensraum angegeben werden). Die Seitendatei MyCodeGif.aspx kann in geändert werden
<%@ Page Language="C#" AutoEventWireup="true" Inherits="PageBase" %>
Entfernen Sie CodeFile="MyCodeGif.aspx.cs" darin.
Auf diese Weise kann die Website auf die gleiche Weise wie VS2003 veröffentlicht werden. Der Prozess mag etwas kompliziert sein, aber ich denke, dass er für die spätere Wartung durchaus nützlich ist. Schließlich bin ich an VS2003 gewöhnt und kann die gleichen virtualisierungsfreien Programme ausführen.
Vollständiger Text. Ich hoffe, es kann für alle nützlich sein.
Autor: Xie Ping, Sunset Track 27.05.2006