1. Введение проблемы В процессе разработки веб-сайта VS2005 публикация веб-сайта всегда была проблемой. Веб-сайт, созданный VS2005, имеет несколько каталогов по умолчанию: App_Code, App_Data, App_Themes....
Если это файл cs/vb, например класс UploadFile.cs UploadFile, этот файл класса не имеет видимого файла aspx, тогда этот файл необходимо поместить в каталог App_Code, иначе этот класс будет недоступен на веб-сайте VS2005. Просто вставил, но при компиляции (мой VS2005 - версия Team, генерация не отвечает. Такое ощущение, что проверяешь код еще раз, а для прекомпиляции можно использовать только веб-сайт публикации. Я не знаю, как выглядят другие версии. .) Возникает проблема: после выбора веб-сайта публикации вам будет предложено выбрать способ публикации. Обычно вы можете выбрать значение по умолчанию. Таким образом, количество создаваемых DLL будет меньше. После публикации обычно будет скомпилирован App_Code. , App_Code.dll в каталоге bin App_Web_ (случайные символы).dll, dll, на который ссылаются, и другие файлы. Проблема заключается здесь. Если вы хотите создать программу, не требующую виртуализации, возможно ли, что в каталог bin нужно поместить два файла App_Code.dll? Не будет конфликта? Также, если программа однажды поменяется и ее нужно будет переиздать, то все. Посмотрите, какие хорошие вещи сделал VS2005. inherits="MyCodeGif, App_Web_vf3ukhnv" изначально был файлом MyCodeGif.aspx и файлом MyCodeGif.aspx.cs. Теперь файл MyCodeGif.aspx наследуется от MyCodeGif, App_Web_vf3ukhnv. Видно, что MyCodeGif — это класс, определенный MyCodeGif.aspx. cs. App_Web_vf3ukhnv — имя dll-файла в папке bin. Если вы попытаетесь опубликовать его еще раз, возникнет более неприятный вопрос. Почему страница MyCodeGif.aspx унаследована от MyCodeGif, App_Web_qwdwqd? Имена скомпилированных сборок разные!
2. Связь между страницами и классами в ASP.Net.
В ASP.Net страницы могут наследовать классы и иметь множественное наследование. например
Файл страницы MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>MyCodeGif.aspx.cs выглядит следующим образом
использование системы;
использование System.Data;
использование System.Configuration;
использование System.Collections;
использование System.Web;
использование System.Web.Security;
использование System.Web.UI;
использование System.Web.UI.WebControls;
использование System.Web.UI.WebControls.WebParts;
использование System.Web.UI.HtmlControls;
использование открытого частичного класса FreeCodeNum
MyCodeGif: System.Web.UI.Page;
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
//.....логика
}
}
Видно, что страница MyCodeGif.aspx наследуется от класса MyCodeGif
и также может быть унаследована таким образом.
Файл страницы MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>
Вот как выглядит MyCodeGif.aspx.cs
использование системы;
использование System.Data;
использование System.Configuration;
использование System.Collections;
использование System.Web;
использование System.Web.Security;
использование System.Web.UI;
использование System.Web.UI.WebControls;
использование System.Web.UI.WebControls.WebParts;
использование System.Web.UI.HtmlControls;
открытого частичного класса
FreeCodeNum
MyCodeGif: PageBase;
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
//.....логика
}
}
PageBase.cs нравится это
использование системы;
использование System.Web;
использование System.Collections
/**//// <сводка>;
/// Краткое описание PageBase
/// </сводка>
общедоступный класс PageBase: System.Web.UI.Page
{
publicPageBase()
{
}
}
Как и мой файл страницы MyCodeGif.aspx, я могу даже
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="PageBase" %>То есть страница напрямую наследуется от класса PageBase.
Вывод: страницы ASP.Net могут наследовать от расширенных подклассов [Наследовано от родительского класса класса System.Web.UI.Page]
3. Решение: Вы также можете настроить имя сборки в VS2005 — то есть при создании времени проекта. , а не время сайта. Другими словами, после того, как созданный вами веб-сайт написан, вы можете заново создать проект, а затем перекомпилировать код веб-сайта. Возможно, вам придется изменить наследование файла aspx после его завершения, но, возможно, вам не придется его менять. Это зависит от того, как вы его сохраните, поскольку наследование файла aspx связано только с именем класса (если оно есть). пространство имен, необходимо также указать пространство имен). Файл страницы MyCodeGif.aspx можно изменить на
<%@ Page Language="C#" AutoEventWireup="true" Inherits="PageBase" %>
Удалите CodeFile="MyCodeGif.aspx.cs" внутри.
Таким образом, веб-сайт можно опубликовать так же, как и VS2003. Процесс может быть немного сложным, но я думаю, что он весьма полезен для дальнейшего обслуживания. Ведь я привык к VS2003 и могу делать те же программы без виртуализации, что и в 2003 году.
Полный текст. Надеюсь, это может быть полезно всем.
Автор: Се Пин, Sunset Track, 27 мая 2006 г.