1. Introducción al problema Durante el proceso de desarrollo del sitio web VS2005, la publicación del sitio web siempre ha sido un problema. El sitio web creado por VS2005 tiene varios directorios predeterminados: App_Code, App_Data, App_Themes...
Si es un archivo cs/vb, como la clase UploadFile.cs UploadFile, este archivo de clase no tiene un archivo aspx visible, entonces este archivo debe colocarse en el directorio App_Code; de lo contrario, esta clase no será accesible en el sitio web VS2005. Simplemente introdúzcalo, pero al compilar (mi VS2005 es la versión Team, la generación no responde. Siento que estoy revisando el código nuevamente y solo puedo usar el sitio web de publicación para precompilar. No sé cómo son otras versiones). .) El problema surge. Después de seleccionar el sitio web de publicación, le permitirá elegir cómo publicar. Generalmente, puede elegir el valor predeterminado. De esa manera, la cantidad de archivos DLL generados será menor. Después de la publicación, generalmente habrá App_Code.compilado. , App_Code.dll en el directorio bin App_Web_ (caracteres aleatorios).dll, dll referenciado y otros archivos. El problema radica aquí. Si desea crear un programa sin virtualización, ¿no sería posible que deba colocar dos App_Code.dll en el directorio bin? ¿No habrá conflicto? Además, si el programa cambia una vez y es necesario volver a publicarlo, eso es todo. Mire las cosas buenas que ha hecho VS2005. hereda = "MyCodeGif, App_Web_vf3ukhnv" era originalmente un archivo MyCodeGif.aspx y un archivo MyCodeGif.aspx.cs. Ahora el archivo MyCodeGif.aspx hereda de MyCodeGif, App_Web_vf3ukhnv. Se puede ver que MyCodeGif es una clase definida por MyCodeGif.aspx. cs.App_Web_vf3ukhnv es el nombre de un archivo dll en la carpeta bin. Si intenta publicarlo nuevamente, surgirá una pregunta más problemática. ¿Por qué la página MyCodeGif.aspx se hereda de MyCodeGif, App_Web_qwdwqd? ¡Los nombres de los ensamblados compilados son diferentes!
2. La relación entre páginas y clases en ASP.Net
En ASP.Net, las páginas pueden heredar de clases y pueden tener herencia múltiple. Por ejemplo
Archivo de página MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>MyCodeGif.aspx.cs es así
usando Sistema;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando FreeCodeNum
clase parcial pública MyCodeGif: System.Web.UI.Page;
{
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
//.....lógica
}
}
Se puede ver que la página MyCodeGif.aspx hereda de la clase MyCodeGif
y también se puede heredar de esta manera.
Archivo de página MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Hereda="MyCodeGif" %>
Así es como se ve MyCodeGif.aspx.cs
usando Sistema;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando FreeCodeNum
clase parcial pública MyCodeGif: PageBase;
{
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
//.....lógica
}
}
A PageBase.cs le gusta esto
usando Sistema;
usando System.Web;
usando System.Collections
/**//// <resumen>;
/// Descripción resumida de PageBase
/// </summary>
PageBase de clase pública: System.Web.UI.Page
{
base de página pública()
{
}
}
Al igual que mi archivo de página MyCodeGif.aspx, incluso puedo
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="PageBase" %>Es decir, la página hereda directamente de la clase PageBase.
Conclusión: las páginas ASP.Net pueden heredar de las subclases extendidas [Heredadas de la clase principal de la clase System.Web.UI.Page]
3. Solución: también puede personalizar el nombre del ensamblado en VS2005, es decir, al crear el tiempo del proyecto. , no la hora del sitio web. En otras palabras, una vez escrito el sitio web que creó, puede volver a crear un proyecto y luego recompilar el código del sitio web. Es posible que deba cambiar la herencia del archivo aspx después de terminarlo, pero es posible que no necesite cambiarlo. Depende de cómo lo guarde, porque la herencia del archivo aspx solo está relacionada con el nombre de la clase (si lo hay). un espacio de nombres, también se debe especificar el espacio de nombres). El archivo de página MyCodeGif.aspx se puede cambiar a
<%@ Page Language="C#" AutoEventWireup="true" Hereda="PageBase" %>
Elimine CodeFile="MyCodeGif.aspx.cs" dentro.
De esta forma, el sitio web se puede publicar de la misma forma que VS2003. El proceso puede ser un poco complicado, pero creo que es bastante útil para el mantenimiento posterior. Después de todo, estoy acostumbrado a VS2003 y puedo hacer los mismos programas sin virtualización que en 2003.
Texto completo. Espero que pueda ser útil para todos.
Autor: Xie Ping, Sunset Track 2006-5-27