1. مقدمة المشكلة أثناء عملية تطوير موقع VS2005، كان نشر موقع الويب يمثل دائمًا مشكلة. يحتوي موقع الويب الذي تم إنشاؤه بواسطة VS2005 على عدة أدلة افتراضية: App_Code، وApp_Data، وApp_Themes...
إذا كان ملف cs/vb، مثل UploadFile.cs class UploadFile، فلا يحتوي ملف الفئة هذا على ملف aspx مرئي، فيجب وضع هذا الملف في دليل App_Code، وإلا فلن يمكن الوصول إلى هذه الفئة في موقع VS2005 فقط أدخله، ولكن عند التجميع (VS2005 الخاص بي هو إصدار الفريق، لا يستجيب الجيل. يبدو الأمر وكأنه التحقق من الكود مرة أخرى، ويمكنه فقط استخدام موقع النشر للترجمة المسبقة. لا أعرف كيف تبدو الإصدارات الأخرى .) تنشأ المشكلة. بعد تحديد موقع النشر، سيتيح لك اختيار كيفية النشر بشكل عام، وبهذه الطريقة سيكون عدد ملفات dll التي تم إنشاؤها أقل، وعادةً ما يكون هناك App_Code.compiled ، App_Code.dll في دليل سلة المهملات App_Web_ (أحرف عشوائية).dll، وdll المشار إليه والملفات الأخرى. تكمن المشكلة هنا. إذا كنت تريد إنشاء برنامج خالٍ من المحاكاة الافتراضية، أليس من الممكن وضع ملفي App_Code.dlls في دليل bin؟ لن يكون هناك صراع؟ وأيضًا، إذا تغير البرنامج مرة واحدة وكان بحاجة إلى إعادة نشره، فهذا كل شيء. انظر إلى الأشياء الجيدة التي قام بها 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
{
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
//.....منطق
}
}
يمكن ملاحظة أن صفحة MyCodeGif.aspx ترث من الفئة MyCodeGif
ويمكن أيضًا توريثها بهذه الطريقة
ملف صفحة MyCodeGif.aspx
<%@ لغة الصفحة = "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
{
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
//.....منطق
}
}
PageBase.cs معجبون بهذا
باستخدام النظام؛
باستخدام System.Web؛
باستخدام System.Collections
/**//// <summary>
/// وصف موجز لـ 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 إلى
<%@ لغة الصفحة = "C#" AutoEventWireup = "صحيح" يرث = "PageBase" %>
قم بإزالة CodeFile = "MyCodeGif.aspx.cs" بالداخل.
وبهذه الطريقة، يمكن نشر موقع الويب بنفس طريقة نشر VS2003. قد تكون العملية معقدة بعض الشيء، لكنني أعتقد أنها مفيدة جدًا للصيانة اللاحقة. بعد كل شيء، أنا معتاد على VS2003 ويمكنني القيام بنفس البرامج الخالية من المحاكاة الافتراضية كما في 2003.
النص الكامل. نأمل أن تكون مفيدة للجميع.
المؤلف: شيه بينغ، مسار الغروب 27/5/2006