كيف تجبر Visual Studio على إعادة إنشاء ملفات .designer لملفات aspx/ascx؟

StackOverflow https://stackoverflow.com/questions/45325

سؤال

في بعض الأحيان، عندما أقوم بتحرير الصفحة أو التحكم في ملفات .designer، يتوقف التحديث عن طريق عناصر التحكم الجديدة التي أضعها على الصفحة.لست متأكدًا من سبب حدوث ذلك، ولكني أتساءل عما إذا كانت هناك أي طريقة لإجبار Visual Studio على إعادة إنشاء ملف .designer.أنا أستخدم Visual Studio 2008

يحرر: آسف كان يجب أن أشير إلى أنني حاولت بالفعل:

  • إغلاق وإعادة فتح جميع الملفات وVisual Studio
  • إجراء تغيير على عنصر التحكم runat="server" على الصفحة
  • حذف وإعادة إضافة توجيه الصفحة
هل كانت مفيدة؟

المحلول

إذا قمت بفتح ملف .aspx والتبديل بين عرض التصميم وعرض HTML والعودة ، فسوف يطلب ذلك مقابل التحقق من عناصر التحكم وإضافة أي مفقود إلى ملف المصمم.

في VS2013-15 يوجد تحويل إلى تطبيق ويب الأمر تحت مشروع قائمة طعام.قبل VS2013، كان هذا الخيار متاحًا في قائمة سياق النقر بزر الماوس الأيمن لملفات as(c/p)x.عند الانتهاء من ذلك، يجب أن ترى أن لديك الآن ملف *.Designer.cs متاحًا وستكون عناصر التحكم الخاصة بك داخل Design HTML متاحة لعنصر التحكم الخاص بك.

ملاحظة:لا ينبغي أن يتم ذلك في وضع التصحيح، حيث لا تتم "إعادة ترجمة" كل شيء عند تصحيح الأخطاء.

أبلغ بعض الأشخاص أيضًا عن نجاحهم عن طريق حذف ملف .designer.cs ثم إعادة إنشاء ملف فارغ بنفس الاسم.

نصائح أخرى

حسنًا، لقد وجدت حلاً ناجحًا، على الرغم من أنني لا أحبه حقًا.اضطررت إلى حذف ملف .designer.cs ثم إعادة إنشاء ملف فارغ بنفس الاسم.وعندما عدت وحفظت ملف aspx مرة أخرى، تمت إعادة إنشاء ملف المصمم.

المراوغة!

أستخدم الطريقة التالية والتي تعمل في كل مرة:

  • حدد الكل رمز في الجبهة (ترميز HTML وما إلى ذلك) في محرر ملف aspx/ascx.
  • يقطع.
  • يحفظ.
  • معجون.
  • يحفظ.

إعادة الترجمة.

لقد رأيت مؤخرًا أنني أواجه نفس المشكلة.كان Visual Studio 2010 يرفض تحديث ملف المصمم.

كما اتضح، لا يقوم VS بتعديل ملف المصمم للصفحة التي تستخدم CodeFile (تشغيل الصفحات) بدلاً من CodeBehind (DLL).وينطبق هذا بغض النظر عن عدد المرات التي تقوم فيها بإغلاق VS أو إعادة تحميل المشروع أو إعادة إنشاء عنصر التحكم (عناصر التحكم) أو تعديل ملف.لا شيء من شأنه أن يدفع VS إلى تجديد المصمم.يبدو الأمر كما لو أنه لا يقوم بإنشاء ملف المصمم لصفحات CodeFile ولكنه يتطلب وجوده هناك.

لقد قمت بتغييره إلى CodeBehind وحفظت الصفحة.تم تحديث ملف المصمم على الفور.ثم قمت بتغييره مرة أخرى وكان كل شيء لا يزال ذهبيًا.يبدو أن هذا السلوك جديد مع VS 2010 / .NET 4.0 لأن VS 2008 لم يعاني من هذا افتراضيًا.

إنه هذا الجزء:

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %>

قم بتغيير CodeFile إلى CodeBehind، ثم احفظه ثم قم بالرجوع.

هناك احتمال آخر:قد يكون لديك خطأ في ملف aspx. الخاص بك والذي لا يسمح لـ Visual Studio بإعادة إنشاء المصمم.

إذا قمت بالتبديل إلى طريقة عرض التصميم، فسوف يُظهر أن عنصر التحكم غير قابل للعرض.إصلاح عنصر التحكم (في حالتي كان اقتباسًا إضافيًا في الخصائص) وإعادة الترجمة يجب أن يؤدي إلى إعادة إنشاء المصمم.

لا تعمل معظم الحلول هنا إذا كنت تقوم بتشغيل Visual Studio 2013 وربما 2012.ربما قدمت Microsoft بعض التحسينات لجعل IDE أكثر سرعة، وبالتالي فقد خفضت عدد الحالات التي تؤدي إلى تشغيل منشئ التعليمات البرمجية.السيناريوهات التالية التي كانت تعمل لم تعد تعمل:

  1. احذف ملف aspx أو ascx - لم يعد يتحقق من هذه الحالة
  2. قم بقص كل المحتوى وإعادة لصقه في ملف aspx أو ascx - لم يعد يعمل، ولا يوجد تغيير في المراجع
  3. التحويل إلى تطبيق ويب - لم يعد الخيار متاحًا
  4. تغيير المحتوى بشكل تعسفي في ملف aspx/ascx - لم يعد يعمل (انظر 2).

الحل بسيط بشكل مدهش، لكنه مرهق بعض الشيء.من أجل تشغيل منشئ التعليمات البرمجية، قم بتغيير شيء يتطلب إنشاء Designer.aspx.cs.لن يؤدي تغيير المحتوى الذي لا يؤثر على التعليمات البرمجية، مثل نمط CSS أو إضافة نص، إلى تشغيل منشئ التعليمات البرمجية.يجب تغيير عنصر التحكم المشار إليه.هيريس كيفية القيام بذلك:

في ascx أو aspx قم بتغيير معرف عنصر التحكم

<asp:HyperLink ID="MyLink" runat="server" NavigateUrl="~/Default.aspx" Text="Home" />

ل

<asp:HyperLink ID="theLINK" runat="server" NavigateUrl="~/Default.aspx" CssClass="tab" Text="Home" />

انتقل إلى ascx.cs أو aspx.cs وتأكد من إعادة تسمية جميع المراجع إلى "MyLink" إلى "theLINK" أيضًا.احفظ وقم بالبناء ويجب أن تكون على ما يرام.

الطريقة الوحيدة التي أعرفها هي حذف ملف المصمم والتحويل إلى تطبيق الويب.ومع ذلك، عند القيام بذلك، عادةً ما ينبثق الخطأ، بخصوص سبب عدم إعادة التجديد التلقائي في المقام الأول، وهو عادةً مرجع تحكم لم يتم الإعلان عنه في رأس الصفحة.

التحويل إلى تطبيق ويب لم ينجح معي.

لم ينجح أيضًا حذف Designer.cs ولصق Designer.cs الفارغ.

لكن نعم نجح هذا:

  1. تحديد الكل (Default.aspx)
  2. يقطع
  3. حفظ Default.aspx
  4. معجون
  5. حفظ Default.aspx

منتهي.تم إنشاء Designer.cs جديد.:)

كثيرا ما وجدت ذلك تسبب النسخ/اللصق في هذا السلوك لي.يمكن حل معظم الحالات عن طريق تحرير معرف عنصر تحكم الخادم (فقط أضف حرفًا، ثم احذفه).

تذكر أيضًا أن التحكم داخل أشياء مثل التكرارات غير مرئي في ملف المصمم.

ونعم، هناك حالات تحتاج فيها إلى إجراء عملية حذف الملف المذكورة أعلاه - ولكن حل تغيير الاسم سيعمل في معظم الأوقات.

تجربتي هي أنه إذا كنت تريد أن تفعل ذلك هذا المادة، كما هو مذكور أعلاه.

يجب أن يتضمن ملف الترميز (aspx/ascx) الخاصية CodeBehind="MyPage.aspx.cs" وإلا فلن يعمل.لقد قمت بالتدوين حول هذا الموضوع هنا.

لقد وجدت طريقة لحل هذه المشكلة دون تغيير أي تعليمات برمجية أو تشغيل أوامر مثل "التحويل إلى تطبيق ويب" - وهي بسيطة أيضًا!

ما وجدته هو أن إعادة تشغيل Visual Studio غالبًا ما تحل المشكلة، لكنها لا تحل المشكلة في بعض الأحيان.في هذه الحالات، إذا قمت بإغلاق Visual Studio وبعد ذلك احذف كل المحتوى الموجود في دليل "obj" لمشروع الويب قبل أن تفتحه مرة أخرى، كان يعمل دائمًا بالنسبة لي.

(عند البدء مرة أخرى، ما عليك سوى إضافة مسافة وإزالتها مرة أخرى ثم الضغط على "حفظ" لإعادة إنشاء ملف المصمم بشكل صحيح)

(ما يلي يأتي من تجربة VS2005.)

إذا قمت بتحرير صفحة ASPX أثناء تصحيح الأخطاء، فلن يتم تحديث التعليمات البرمجية الخلفية بالفئات الجديدة.لذلك، يجب عليك التوقف عن تصحيح الأخطاء، وتحرير صفحة ASPX بشكل تافه (مثل إضافة زر أو شيء من هذا القبيل)، ثم النقر فوق Design View، ثم حذف الزر.ومن ثم، يجب تحديث ملفات المصمم الخاص بك.

إذا كنت تواجه مشكلة مختلفة مع VS2008، فلا يمكنني مساعدتك.

عندما تكون في عرض التصميم، انقر بزر الماوس الأيمن على الشاشة واضغط على تحديث.

الشيء الآخر الذي نجح هو -

  1. احذف يدويًا ثم قم بإنشاء ملف مصمم في نظام الملفات.
  2. تحرير المشروع ملف.
  3. إضافة رمز لتضمين المصمم
    على سبيل المثال: <Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. إعادة تحميل المشروع
  5. افتح الملف باسم (c/p)x في وضع التصميم/العرض واحفظه.
  6. التحقق من ملف المصمم.سيكون الرمز هناك.

إذا كنت تستخدم VS2013 أو إصدارًا أحدث، فتأكد من أن الكود المشار إليه بالسمة "CodeBehind" وليس "CodeFile"، ثم قم بالخطوات التالية

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • قم بإنشاء صفحة مصمم فارغة (أو قم بمسحها إذا كانت موجودة بالفعل "yourControl.ascx.designer.cs")
  • في ascx (أو aspx) انسخ كل التعليمات البرمجية، ثم احذفها، ثم احفظها.أعد لصقه مرة أخرى، ثم احفظه.
  • يجب ملء ملف المصمم الآن.
  • حدد الكل في ملف المصمم واحذف كل شيء في الملف واتركه فارغًا ثم احفظه
  • حدد الكل في ملف ASPX/ASCX واقطع كل شيء ثم أعد لصقه مرة أخرى
  • يجب أن يقوم ملف المصمم بإعادة إنشاء الكود

فيما يلي Wat I Walked ، حدد مجلد موقع الويب انقر بزر الماوس الأيمن في Solution Explorer ، حدد تحويل إلى تطبيق الويب لجميع ملف ASPX الذي سيتم إنشاء ملف مصمم.

سمير

فقط للإضافة إلى قائمة الإجابات الطويلة هنا - لقد واجهت هذه المشكلة للتو في VS2010 (SP1) باستخدام ملف .aspx.لقد حاولت إضافة وإزالة عناصر تحكم ASP القياسية (التي كانت تعمل في الماضي) ولكن في النهاية، اضطررت إلى إزالة أحد عناصر التحكم runat=خطوط الخادم من عنصر تحكم موجود (وحفظ) لإجبار ملف المصمم على التجديد.

لقد واجهت نفس المشكلة لسنوات حتى الآن، وأنا أعمل في Visual Studio 2008.ولقد جربت كل "حل" على StackOverflow وعشرات المدونات، تمامًا كما أنا متأكد من أنكم جميعًا فعلتم ذلك.وأحيانًا يعملون، وأحيانًا لا يفعلون ذلك، تمامًا كما أنا متأكد من أنكم جميعًا قد واجهتم ذلك.ويبدو أنها لا تزال مشكلة في VS2010 وVS2012.

أخيرًا، منذ بضعة أشهر، قررت أن هذا يكفي، وعلى مدى بضعة أسابيع لقد قمت ببناء أداة تسمى "Redesigner" والتي تقوم بإنشاء ملفات .designer.إنه مفتوح المصدر بموجب ترخيص BSD, ، مع الكود المصدري المتوفر على SourceForge - مجاني للاستخدام، مجاني للسرقة، مجاني لفعل أي شيء تريده.وهو يفعل ما يفشل Visual Studio في القيام به كثيرًا، وهو إنشاء ملفات .designer بسرعة وبشكل موثوق.

إنها أداة سطر أوامر قائمة بذاتها تقوم بتحليل ملفات aspx. وascx. وتنفذ جميع عمليات الانعكاس السحرية الضرورية وتنتج ملفات .designer الصحيحة.فهو يقوم بكل عمليات التحليل والتفكير بنفسه لتجنب الاعتماد على التعليمات البرمجية الموجودة، والتي نعلم جميعًا جيدًا أنها معطلة.لقد تمت كتابته بلغة C# مقابل .NET 3.5، ولكنه يبذل جهدًا لتجنب استخدام حتى System.Web لأي شيء آخر غير إعلانات النوع، و لا يستخدم Visual Studio أو يعتمد عليه على الإطلاق.

يمكن لبرنامج Redesigner إنشاء ملفات .designer جديدة؛ويوفر خيارًا -حتى عندما تسوء الأمور ، ستحصل على رسائل خطأ أفضل بكثير من "استثناء من النوع System.exception تم طرحه". وهناك خيار -قم بتوضيح يمكن استخدامه لإخبارك عندما يتم كسر ملفات .Designer الحالية -عناصر التحكم المفقودة ، أو إعلانات الممتلكات السيئة ، أو غير قابلة للقراءة من قبل Visual Studio ، أو مجرد borked العادي.

لقد كنا نستخدمه في مكان عملي لإخراجنا من الاختناقات في الجزء الأفضل من الشهر الماضي الآن، وبينما لا يزال Redesigner في مرحلة تجريبية، فقد قطع شوطًا طويلاً بما يكفي ليستحق مشاركة وجوده مع الجمهور.أنوي قريبًا إنشاء مكون إضافي لـ Visual Studio لذلك يمكنك ببساطة النقر بزر الماوس الأيمن للتحقق من ملفات المصمم أو إعادة إنشائها بالطريقة التي كنت تتمنى دائمًا القيام بها.ولكن في هذه الأثناء، يعد استخدام سطر الأوامر أمرًا سهلاً للغاية وسيوفر عليك الكثير من المتاعب.

على أي حال، اذهب لتنزيل نسخة من Redesigner الآن وتوقف عن شد شعرك.لن تحتاج إليها دائمًا، ولكن عندما تفعل ذلك، ستكون سعيدًا بحصولك عليها!

https://sourceforge.net/projects/redesigner/

ليرة تركية؛دكتور؛
تحرير Inherits سمة صفحة ASPX @Page التوجيه واضغط على حفظ.ينبغي إعادة إنشاء ملف المصمم الخاص بك.

ضمان Inherits = <مساحة الاسم>.<class_name> و CodeBehind = <class_name>.aspx.cs


كنت أحاول القيام بذلك على مشروع Sharepoint 2010، باستخدام VS 2010 وTFS, ، ولم ينجح أي من الحلول المذكورة أعلاه بالنسبة لي. في المقام الأول الخيار، "التحويل إلى تطبيق ويب" مفقود من قائمة النقر بزر الماوس الأيمن لملف .ASPX عند استخدام TFS في VS 2010.

ساعدت هذه الإجابة في النهاية.بدا صفي مثل هذا:

namespace MyProjects.Finance.Pages
{
    public partial class FinanceSubmission : WebPartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // more code
    }
}

و الخاص بي @Page كان التوجيه (فواصل الأسطر هنا من أجل الوضوح):

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="FinanceSubmission.aspx.cs"
    Inherits="MyProjects.Finance.Pages.FinanceSubmission"
    MasterPageFile="~masterurl/default.master" %>

لقد غيرت أولا Inherits ل MyProjects.Finance.Pages, ، واضغط على "حفظ"، ثم قم بتغييره مرة أخرى إلى MyProjects.Finance.Pages.FinanceSubmission واضغط على حفظ مرة أخرى.والله!تم تجديد صفحة المصمم!

آمل أن يساعد هذا شخصًا يستخدم TFS!

داخل الاستوديو المرئي:

1) قم بإزالة ملف aspx.designer.cs الخاص بك

2) انقر بزر الماوس الأيمن على ملف ASPX الخاص بك وحدد "تحويل إلى تطبيق الويب" يجب أن يضيف ASPX.Designer.cs مرة أخرى وحتى الآن.

إذا حصلت على خطأ قائلا:

"فشل إنشاء ملف المصمم:لم يتم تنفيذ الطريقة أو العملية."

حاول إغلاق Visual Studio ثم أعد فتح مشروعك وقم بالخطوة الثانية مرة أخرى

كيفية إنشاء aspx.designer.cs في الاستوديو المرئي؟

احذف ملف Designer.cs ثم انقر بزر الماوس الأيمن على الملف .aspx واختر "تحويل إلى تطبيق ويب".إذا كانت هناك مشكلة في إعلانات التحكم الخاصة بك، مثل عدم تشكيل العلامة بشكل جيد، فستتلقى رسالة خطأ وستحتاج إلى تصحيح العلامة المشوهة قبل أن يتمكن Visual Studio من إعادة إنشاء ملف المصمم الخاص بك بنجاح.

في حالتي، في هذه المرحلة، اكتشفت أن المشكلة تكمن في أنني أعلنت عن زر تحكم لم يكن موجودًا داخل علامة نموذج بسمة runat = "server".

هذا خطأ في IDE;لقد رأيت ذلك منذ VS 2003.الحل بسيط بالرغم من ذلك.

احفظ ملفاتك.اخرج تمامًا من IDE (تأكد من توقف العملية، مدير المهمة.)

أعد فتح الحل، وقم بتسخين العلامات، ثم احفظها.مُثَبَّت.

كانت عندي مشكلتين...AJAXControlkit قديم - حذف ملف dll القديم، وإزالة عناصر التحكم القديمة من مربع الأدوات، وتنزيل إصدار جديد، وتحميل مربع الأدوات، وسحب عناصر التحكم الجديدة وإسقاطها على الصفحة (راجع http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html)

كان هناك أيضًا خطأ إملائي في عنصر التحكم في التسمية (استخدمت "class" بدلاً من "cssclass").

تا

إذا كنت مثلي وقمت بإضافة ملفات .ASPX القديمة إلى مشروع أحدث.من المحتمل أنك ستنسى بعض عناصر التحكم المستخدمة في الصفحة.

إذا كان الأمر كذلك، أول شيء، إذا كانت هناك ملفات متعددة تقوم بتثبيتها؛إصلاح واحد في وقت واحد أولا.

عند التجميع، قم بإصلاح الأخطاء التي تم إنشاؤها.من المحتمل أن تكون نفس الأخطاء في جميع الملفات.

بعد ذلك، إذا كان لديك ملفات المصمم، فاحذف جميع ملفات المصمم المدرجة.بعد ذلك ، تأكد من عدم وجود أي أخطاء أخرى عند التجميع ، بخلاف ملفات المصمم.

أخيرًا، انقر بزر الماوس الأيمن فوق مشروع الويب الخاص بك وانقر فوق "تحويل إلى تطبيق ويب".سيؤدي هذا إلى إدراج ملفات المصمم التي تحتاجها.

هذه هي أفضل الخطوات المطلقة لإصلاح المشكلات.

الشيء الوحيد الذي لم يذكره أحد هو قم بزيارة الصفحة.لقد توقفت عن إعادة إنشاء ملف المصمم الخاص بي لأنني كنت أقوم بتضمين عنصر تحكم مستخدم غير موجود (لأسباب مختلفة)، ولم ينجح أي من الأشياء المقترحة هنا.لأي سبب من الأسباب، لم أواجه أية أخطاء في Visual Studio - إلى جانب الخطأ الذي يشكو من عدم وجود عناصر التحكم من جانب العميل لأنه لم يتم إعادة إنشائها بالطبع.

لقد استغرق الأمر بالفعل زيارة الصفحة حتى يخبرني ASP.Net بالخطأ.

يمكن أن يحدث هذا أيضًا إذا قمت بتحديث مساحة الاسم ولم تقم بتحديث مساحة الاسم في ملف المصمم.يصلح:قم بتحديث مساحة الاسم في ملف المصمم أيضًا.

الحل الذي نجح معي هو:

لقد قمت للتو بنسخ الصفحة ولصقها في نفس الجزء، ثم قمت بإعادة تسمية الصفحة الأولى (أيًا كان الاسم) وأعدت تسمية الصفحة المنسوخة بالصفحة الأصلية.الآن يمكن الوصول إلى عناصر التحكم.

في Solution Explorer فقط انقر بزر الماوس الأيمن وحدد تحويل إلى تطبيق ويب.سيقوم بإنشاء جميع ملفات المصمم مرة أخرى.

  1. استبدل علامتك المخصصة باسم علامة غير صالح.احفظها
  2. استعادة اسم العلامة غير الصالح مرة أخرى إلى اسم العلامة المخصصة.احفظها.سيُطلب منك بعد ذلك التحقق من ملفات *.designer.cs (أو تعديل Designer.cs بصمت) وإنتاج المتغير الصحيح للتحكم في العلامات المخصصة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top