คุณจะบังคับให้ Visual Studio สร้างไฟล์. designer ใหม่สำหรับไฟล์ aspx / ascx อย่างไร


395

บางครั้งเมื่อฉันแก้ไขหน้าหรือควบคุมไฟล์. designer หยุดการอัปเดตด้วยตัวควบคุมใหม่ที่ฉันวางไว้บนหน้า ฉันไม่แน่ใจว่าเกิดอะไรขึ้น แต่ฉันสงสัยว่ามีวิธีใดที่บังคับให้ Visual Studio สร้างไฟล์. designer ขึ้นมาใหม่ ฉันใช้ Visual Studio 2008

แก้ไข:ขอโทษฉันควรสังเกตว่าฉันได้ลองแล้ว:

  • การปิด & เปิดไฟล์ทั้งหมดและ Visual Studio อีกครั้ง
  • การเปลี่ยนแปลงการควบคุม runat = "server" บนหน้า
  • การลบ & เพิ่มคำสั่งของหน้าอีกครั้ง

57
มันไร้สาระหรือเปล่าที่ในปี 2012 Visual Studio ยังไม่มีรายการเมนูบริบทเพื่อสร้างไฟล์ตัวออกแบบจากไฟล์ต้นฉบับ? มันคล้ายกับการไม่สามารถสร้าง DLL ที่เสียหายได้ ฉันไม่เข้าใจมัน .. โดยเฉพาะอย่างยิ่งกับการควบคุมแหล่งภายนอกและบรรณาธิการภายนอกคุณปล่อยให้ Visual Studio พิการ เสียเงินถ้าคุณถามฉัน ฉันพยายามสร้างตัวออกแบบไฟล์ทรัพยากรขึ้นมาใหม่ ฉันจัดการเพื่อแก้ไขมันสร้างใหม่ แต่มันผ่านความสับสน ...
— Augh

3
@bamccaig ถ้าฉันมีเพนนีสำหรับฟีเจอร์ "แปลก" ทุกอย่างเช่นนี้ฉันก็จะยิ่งรวยกว่า Bill Gates หากคุณคิดว่าสิ่งนี้ไม่ดีให้ดูที่ที่ Outlook Express เก็บข้อมูลอีเมลไว้ มันฝังอยู่ลึกลงไปในโฟลเดอร์ผู้ใช้ภายใต้ชื่อโฟลเดอร์ลับที่ถูกซ่อนไว้โดยค่าเริ่มต้น
— ATL_DEV

13
มีวิธีแก้ปัญหาสำหรับ VS 2015 หรือไม่?
— Anton

ดูstackoverflow.com/questions/6508252/…ที่เกี่ยวข้องสำหรับความพยายามอื่น ๆ
— goodeye

2
ไม่ใช่การแก้ไขแบบถาวร แต่จะคืนค่าการควบคุมการอ้างอิงในไฟล์. cs: 1. เปิดไฟล์. aspx ที่เกี่ยวข้อง 2. ลบ ">" เดี่ยวที่ท้าย<%@ Pageบรรทัดคำสั่ง; 3. รอสักครู่หรือสองวินาที 4. ใส่ ">" กลับ 5. สลับไปที่ไฟล์. cs และคุณจะเห็นว่าตอนนี้ไม่มีข้อผิดพลาดในการอ้างอิงการควบคุม ฉันได้ทำสิ่งนี้มานานแล้วทำงานได้ทุกครั้งในทุกเวอร์ชั่น VS
— ingredients_15939

คำตอบ:


368

หากคุณเปิดไฟล์. aspx และสลับไปมาระหว่างมุมมองออกแบบและมุมมอง html และย้อนกลับจะเป็นการแจ้งให้ VS ตรวจสอบการควบคุมและเพิ่มสิ่งที่ขาดหายไปในไฟล์ผู้ออกแบบ

ใน VS2013-15 มีคำสั่งแปลงเป็น Web Applicationภายใต้เมนูโครงการ ก่อนหน้า VS2013 ตัวเลือกนี้มีอยู่ในเมนูบริบทคลิกขวาสำหรับไฟล์ (c / p) x เมื่อดำเนินการเสร็จแล้วคุณควรเห็นว่าตอนนี้คุณมีไฟล์ * .Designer.cs และตัวควบคุมของคุณใน Design HTML จะพร้อมใช้งานสำหรับการควบคุมของคุณ

PS: สิ่งนี้ไม่ควรทำในโหมดดีบักเนื่องจากไม่ใช่ทุกอย่างที่ "คอมไพล์ใหม่" เมื่อทำการดีบั๊ก

บางคนรายงานความสำเร็จด้วย (ทำสำเนาสำรองของไฟล์. designer.cs ของคุณแล้ว) ลบไฟล์. designer.cs สร้างไฟล์เปล่าอีกครั้งด้วยชื่อเดียวกัน

มีความคิดเห็นมากมายสำหรับคำตอบนี้ที่เพิ่มเคล็ดลับวิธีการสร้างไฟล์ designer.cs ใหม่


1
สิ่งนี้ใช้ได้กับฉันหลังจากปิดทุกครั้ง (แม้แต่ผู้ที่มีวิธีแก้ไขปัญหาที่แตกต่างกันโดยสิ้นเชิง) ของ VS2008
— Kevin

11
ฉันพบว่าการเปลี่ยนจากโหมดดีบั๊กเป็นโหมดปล่อยให้ขุดเคล็ดลับสำหรับฉันขอบคุณ
— Chris

5
แค่อยากจะบอกว่าฉันมีข้อผิดพลาดเดียวกันและลองทุกอย่างในหน้านี้โดยไม่มีอะไรทำงาน กลายเป็นว่าฉันไม่มีแท็กปิด ">" ใน div ที่มี runat = "server" ใช้ VS-2008
— Ber53rker

10
ในการทำให้ "แปลงเป็นเว็บแอปพลิเคชัน" ปรากฏขึ้นอันดับแรกคุณต้องลบไฟล์ Designer.cs ด้วยการคลิกขวาไฟล์ aspx ในโซลูชัน Explorer และเลือกลบ สิ่งนี้ใช้ได้กับฉันในปี 2010
— DeveloperDan

43
VS2013 มี Convert to Web Application ภายใต้เมนู Project ไม่เพียงแค่ในเมนูบริบทอีกต่อไป
— Dennis Burton

95

ฉันพบวิธีแก้ปัญหาที่ใช้งานได้ดี แต่ฉันไม่ชอบมัน ฉันต้องลบไฟล์. designer.cs จากนั้นสร้างไฟล์เปล่าที่มีชื่อเดียวกัน เมื่อฉันกลับไปและบันทึกไฟล์ aspx อีกครั้งไฟล์ผู้ออกแบบถูกสร้างขึ้นใหม่

หลบ!


3
มันก็ใช้ได้กับฉันเช่นกัน ไม่เหมาะ ไม่ทราบสาเหตุที่ไฟล์ desginer ดั้งเดิมหยุดการอัปเดตอย่างถูกต้อง
— ผู้ถือเลน

3
สิ่งนี้ไม่ได้ผลสำหรับฉัน ตอนนี้ฉันมีไฟล์ว่างเปล่าและโค้ดด้านหลังทั้งหมดไม่ทำงาน !!! กำลังรีบูต ...
— DiningPhilanderer

7
สิ่งนี้ใช้ได้สำหรับฉัน ฉันแน่ใจว่าจะลบต้นฉบับสร้างไฟล์ designer.cs ใหม่ที่มีชื่อเดียวกันปิดไฟล์ใหม่แก้ไขไฟล์. as (p / c) x เล็กน้อยเพื่อบังคับให้บันทึกแล้วมันก็ดีทั้งหมด
— TJB

9
หากคุณมีข้อผิดพลาดในการรวบรวมดูมันจะไม่กลับมา โดยทั่วไปนั่นเป็นเหตุผลว่าทำไมมันถึงหยุดการฟื้นฟูในตอนแรก คุณต้องเปิดการคอมไพล์เพื่อดูเพื่อดูซึ่งไม่ได้อยู่ตรงหน้า
— กำลังพัฒนา

1
ฉันต้องรวมไฟล์เปล่าในโครงการด้วย
— JP Hellemons

78

ฉันใช้วิธีการต่อไปนี้ซึ่งใช้งานได้ทุกครั้ง:

  • เลือกcode-in-front (html markup etc) ทั้งหมดในเครื่องมือแก้ไขของไฟล์ aspx / ascx
  • ตัด.
  • บันทึก
  • วาง
  • บันทึก

คอมไพล์


1
ฉันคิดว่าเพียงแค่ลบการควบคุมเดียวและเพิ่มใหม่มันมีผลเหมือนกัน
— chris

ฉันทำสิ่งนี้และมันก็ใช้ได้ผลสำหรับฉัน อย่างไรก็ตามฉันต้องสร้างไฟล์ว่างที่เรียกว่า<name>.aspx.designer.vbเพื่อให้มันใช้งานได้
— Tahir Hassan

64

ฉันเพิ่งเห็นว่าฉันมีปัญหาเดียวกัน 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.designer.cs ฉันหวังว่าสิ่งนี้จะทำได้ แต่ก็ยังไม่บังคับให้มีการประกาศตัวควบคุมในไฟล์ * .aspx.designer.cs ฉันใช้ VS 2010 Pro SP1 ฉันพยายามที่จะให้มันทำงานกับไฟล์เริ่มต้นใด ๆ ที่ IDE สร้างใน / บัญชีเช่น ChangePassword.aspx ขอบคุณ
— paparush

1
ฉันถูกตั้งค่าเป็น CodeFile ฉันเปลี่ยนเป็น CodeBehind บันทึกกลับไปเป็น CodeFile บันทึกทุกอย่างเป็นสีทอง ความพยายามก่อนหน้านี้ในการแก้ไขไม่ได้ทำเพื่อฉัน VS 2010 Pro
— Dan

37

มีความเป็นไปได้อื่น: คุณอาจมีข้อผิดพลาดในไฟล์. aspx ที่ไม่อนุญาตให้ Visual Studio สร้างผู้ออกแบบใหม่

หากคุณเปลี่ยนไปใช้มุมมองออกแบบจะแสดงตัวควบคุมว่าไม่สามารถแสดงผลได้ แก้ไขการควบคุม (ในกรณีของฉันมันเป็นคำพูดพิเศษในคุณสมบัติ) และการคอมไพล์ซ้ำควรสร้างนักออกแบบใหม่


ฉันมีปัญหาเดียวกันการควบคุมผู้ใช้มีข้อผิดพลาดดังนั้นหน้าเว็บที่ใช้การควบคุมผู้ใช้มีข้อผิดพลาดที่ไม่เกี่ยวข้องเนื่องจากข้อผิดพลาดในการควบคุมผู้ใช้
— Ronen Festinger

1
สาเหตุเดียวกัน ฉันเห็นแอตทริบิวต์ที่ไม่สนับสนุน = "false" ในปุ่ม asp ฉันลบมันแล้วรหัสผู้ออกแบบก็ถูกสร้างขึ้นใหม่
— chingNotCHing

21

โซลูชันส่วนใหญ่ที่นี่ไม่ทำงานหากคุณใช้ Visual Studio 2013 และอาจเป็นไปได้ 2012 Microsoft อาจแนะนำการปรับแต่งบางอย่างเพื่อสร้าง IDE snappier ดังนั้นพวกเขาจึงลดจำนวนกรณีที่เรียกใช้ตัวสร้างรหัส สถานการณ์จำลองต่อไปนี้ที่ใช้ในการทำงานไม่ได้ทำอีกต่อไป:

  1. ลบไฟล์ aspx หรือ ascx - ไม่ตรวจสอบกรณีนี้อีกต่อไป
  2. ตัดเนื้อหาและทำใหม่ทั้งหมดลงในไฟล์ aspx หรือ ascx - ไม่ทำงานอีกต่อไปไม่มีการเปลี่ยนแปลงในการอ้างอิง
  3. แปลงเป็นแอปพลิเคชันบนเว็บ - ไม่มีตัวเลือกอีกต่อไป
  4. เนื้อหาที่เปลี่ยนแปลงโดยพลการในไฟล์ aspx / ascx - ไม่ทำงานอีกต่อไป (ดู 2)

การแก้ปัญหานั้นง่ายอย่างน่าประหลาดใจ แต่มันก็ค่อนข้างยุ่งยาก เพื่อที่จะทริกเกอร์ตัวสร้างรหัสให้เปลี่ยนสิ่งที่จะต้องสร้าง designer.aspx.cs การเปลี่ยนแปลงเนื้อหาที่ไม่ส่งผลกระทบต่อโค้ดเช่นสไตล์ CSS หรือการเพิ่มข้อความจะไม่ทำให้ตัวสร้างโค้ดทำงาน คุณต้องเปลี่ยนการควบคุมที่อ้างอิง นี่คือวิธีการ:

ใน ascx หรือ aspx เปลี่ยน ID ของตัวควบคุม

<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" เช่นกัน บันทึกและทำการสร้างและคุณควรจะไปดี


จุดดีมากเกี่ยวกับการเปลี่ยนแปลงใน Visual Studio รุ่นที่ใหม่กว่า สิ่งที่ใช้ได้ผลสำหรับฉันมากกว่าที่จะล้อเล่นกับ ID ด้านบนถูกเช็ดไฟล์ตัวออกแบบออกแล้วเพิ่มการควบคุมใหม่ที่อ่อนโยนเช่น <asp: PlaceHolder ID = "Foo" runat = "เซิร์ฟเวอร์ /> แล้วบันทึกเพื่อกระตุ้น การงอกใหม่จากนั้นแม้ว่าคุณจะลืมที่จะลบมันไม่มีอะไรได้รับผลกระทบ
— Jordan Rieger

8
3. 'แปลงเป็นเว็บแอปพลิเคชัน' พร้อมใช้งานในเมนู 'โครงการ' หากมีการเลือกไฟล์ที่เหมาะสม
— WynandB

2
อืมมม น่าเสียดายที่ตัวเลือกนี้ไม่สามารถใช้ได้หากเป็นเว็บแอปพลิเคชันอยู่แล้ว
— ATL_DEV

การเปลี่ยนแปลงอย่างรวดเร็วคือการแก้ไขส่วนเนมสเปซของแอตทริบิวต์ Inherits = สิ่งนี้ควรแก้ไขเนมสเปซในไฟล์. designer และสร้างเนื้อหาทั้งหมดภายในใหม่ ฉันเพิ่งลองสิ่งนี้กับ VS2013.3
— David Russell

สวัสดีฉันปกติลองวิธีที่คุณให้ แต่ปัญหาคือผู้ใช้รายอื่นไม่สามารถสร้างไฟล์ g.cs ในขณะที่ผู้ดูแลระบบเท่านั้นที่สามารถทำได้ เรากำลังใช้ TFS ด้วยการใช้ ID ผู้ใช้ของนักพัฒนาหลายคนใน VS เราสามารถสร้าง g.cs ได้ สิทธิในการสร้าง g.cs บนเซิร์ฟเวอร์, TFS & SP คืออะไร?
— nirav

14

วิธีเดียวที่ฉันรู้คือการลบไฟล์ผู้ออกแบบและทำการแปลงเป็นเว็บแอป อย่างไรก็ตามเมื่อคุณทำเช่นนี้มันมักจะปรากฏขึ้นพร้อมกับข้อผิดพลาดว่าทำไมมันไม่ได้ลงทะเบียนใหม่โดยอัตโนมัติในสถานที่แรกมักจะอ้างอิงการควบคุมที่ไม่ได้ประกาศในหัวของหน้า


ขออภัยมันใช้ไม่ได้ผลมันทำงานใน VS 2008 สำหรับฉันตั้งแต่ฉันเริ่มใช้งาน มีข้อผิดพลาดทางไวยากรณ์ในหน้าของคุณหรือไม่ คุณควรได้รับกล่องโต้ตอบที่บอกคุณว่าต้องแก้ไขอย่างไรเพื่อให้มันทำงานได้
— กำลังพัฒนา

สิ่งนี้ใช้ได้สำหรับฉัน คลาส behind รหัสมีint Idคุณสมบัติที่รวบรวมได้ดีใน C # เนื่องจากมันเป็นกรณี ๆ แต่ID="ControlName"ในหน้า aspx Id = "ControlName"ก็พยายามที่จะทำ กล่าวว่าสิ่งที่ต้องการConvert to Web App ControlName cannot be converted to Int32
— Nelson Rothermel

9

เปลี่ยนเป็น Web Application ไม่ได้ผลสำหรับฉัน

การลบ designer.cs และการวาง designer.cs ที่ว่างเปล่าก็ไม่ได้ผลเช่นกัน

แต่ใช่มันใช้งานได้:

  1. เลือกทั้งหมด (Default.aspx)
  2. ตัด
  3. บันทึก Default.aspx
  4. วาง
  5. บันทึก Default.aspx

เสร็จสิ้น สร้าง designer.cs ใหม่แล้ว :)


ฉันสามารถยืนยันได้ว่างานนี้ใน VS2013 ฉันเพิ่งทำและแก้ไขปัญหาของฉัน
— ToastyMallows

คุณ. มี. ได้รับ. ถึง. เป็น การล้อเล่น ผม. สิ่งนี้ใช้ได้กับฉันใน VS2015 เมื่อการแปลงเหมือนในคำตอบที่เลือกไม่ได้
— GraehamF

6

ฉันมักจะพบว่าการคัดลอก / การวางทำให้เกิดปัญหานี้สำหรับฉัน กรณีส่วนใหญ่สามารถแก้ไขได้โดยการแก้ไข ID ของการควบคุมเซิร์ฟเวอร์ (เพียงเพิ่มตัวอักษรแล้วลบมัน)

โปรดจำไว้ว่าการควบคุมสิ่งต่าง ๆ เช่นผู้ทำซ้ำจะไม่ปรากฏในไฟล์ผู้ออกแบบ

และใช่มีหลายกรณีที่คุณต้องใช้เวทมนตร์ลบไฟล์ดังกล่าวข้างต้น - แต่วิธีเปลี่ยนชื่อจะทำงานได้เกือบตลอดเวลา


2
นั่นเป็นข้อผิดพลาดที่ฉันมีหลายครั้ง หากคุณคัดลอก HTML จากหน้าหนึ่งไปอีกหน้าหนึ่งและมีการควบคุมด้วย runat = "เซิร์ฟเวอร์" การควบคุมจะถูกเปลี่ยนชื่อเพื่อหลีกเลี่ยงความขัดแย้ง อย่างไรก็ตามหากคุณวางในแท็ก "ความคิดเห็น html" <! - whaterver -> รหัสควบคุมจะไม่เปลี่ยนและความขัดแย้งใด ๆ จะหยุดการสร้างไฟล์ตัวออกแบบใหม่เนื่องจากมีสองตัวควบคุมที่มี ID เดียวกัน นั่นเป็นเพราะการควบคุมภายในแท็ก "ความคิดเห็น" จะถูกสร้างขึ้นด้วย ;)
— tomasofen

5

ประสบการณ์ของฉันคือถ้าคุณต้องการทำเช่นนี้บทความเช่นระบุไว้ข้างต้น

ไฟล์มาร์กอัปของคุณ (aspx / ascx) จะต้องมีแอตทริบิวต์ CodeBehind = "MyPage.aspx.cs" มิฉะนั้นไฟล์จะไม่ทำงาน ฉัน blogged เกี่ยวกับเรื่องนี้ที่นี่


เพิ่มคุณลักษณะนี้แล้วบันทึก; ไม่มีอะไร จากนั้นลบ Inherits บันทึกคืนค่าและ voila ไฟล์รหัสตัวออกแบบถูกอัพเดต! คุณลักษณะที่น่ารำคาญนี้ดึงดูดฉันทุกครั้ง :-(
— GlennG

ลิงก์ทั้งสองนั้นตายแล้ว = (
— Maslow

5

ฉันพบวิธีแก้ปัญหานี้โดยไม่ต้องเปลี่ยนรหัสหรือคำสั่งที่เรียกใช้เช่น "แปลงเป็น Web Application" - และมันก็ง่ายเช่นกัน!

สิ่งที่ฉันพบคือการเริ่มต้น Visual Studio ใหม่มักจะแก้ปัญหา แต่บางครั้งก็ไม่ ในกรณีดังกล่าวถ้าคุณปิด Visual Studio แล้วลบเนื้อหาทั้งหมดในไดเรกทอรี "obj" สำหรับโครงการเว็บก่อนที่คุณจะเปิดอีกครั้งมันจะทำงานให้ฉันเสมอ

(เมื่อเริ่มต้นอีกครั้งคุณเพียงแค่เพิ่มช่องว่างและลบออกอีกครั้งจากนั้นกด save เพื่อสร้างไฟล์ตัวออกแบบใหม่อย่างเหมาะสม)


ฉันประสบปัญหานี้กับแอปรุ่นเก่าที่ฉันรับผิดชอบในการสนับสนุน ฉันอยากจะบอกว่าขอบคุณที่ชี้ให้เห็น ฉันไม่ได้รับอนุญาตให้แปลงเป็นเว็บแอปพลิเคชัน "สร้างโซลูชันใหม่หรือทำอะไรก็ได้ยกเว้นแก้ไขข้อบกพร่องนักออกแบบจะทำผิดพลาดอย่างต่อเนื่องสำหรับฉัน แต่สิ่งนี้ช่วยได้แล้ว
— Jamie Taylor

4

(สิ่งต่อไปนี้มาจากประสบการณ์กับ VS2005)

หากคุณแก้ไขเพจ ASPX ขณะทำการดีบั๊กโค้ดจะไม่ได้รับการอัพเดตด้วยคลาสใหม่ ดังนั้นคุณต้องหยุดการดีบักแก้ไขเพจ ASPX เล็กน้อย (เช่นเพิ่มปุ่มหรืออะไรก็ได้) จากนั้นคลิกมุมมองออกแบบจากนั้นลบปุ่ม จากนั้นไฟล์นักออกแบบของคุณควรได้รับการอัปเดต

หากคุณมีปัญหาอื่นกับ VS2008 ฉันก็อดไม่ได้


วิ่งเข้าไปหาสิ่งนี้ด้วย VS.Net 2010 ... ต้องทำอย่างนี้ ... ขอบคุณ @EndangeredMassa สำหรับคำแนะนำ ... ฉันเคยผ่านมันไปใน VS.Net 2002/2003 วันเช่นกัน ... รู้อย่างนี้แล้ว;)
— Richard B

4

เมื่อคุณอยู่ในมุมมองออกแบบให้คลิกขวาบนหน้าจอและกดรีเฟรช


3

อีกสิ่งหนึ่งที่ใช้ได้คือ -

  1. ลบด้วยตนเองแล้วสร้างไฟล์ผู้ออกแบบในระบบไฟล์
  2. แก้ไขโครงการไฟล์
  3. เพิ่มรหัสเพื่อรวมนักออกแบบ
    เช่น:<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. โหลดโครงการอีกครั้ง
  5. เปิดเป็นไฟล์ (c / p) x ในโหมดออกแบบ / ดูและบันทึก
  6. ตรวจสอบไฟล์นักออกแบบ รหัสจะอยู่ที่นั่น

3

หากคุณใช้ VS2013 หรือใหม่กว่าตรวจสอบให้แน่ใจว่ารหัสที่อ้างถึงด้วยแอตทริบิวต์ "CodeBehind" ไม่ใช่ "CodeFile" จากนั้นทำตามขั้นตอนด้านล่าง

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • สร้างหน้าผู้ออกแบบที่ว่างเปล่า (หรือล้างมันหากมีอยู่แล้ว "yourControl.ascx.designer.cs")
  • ใน ascx (หรือ aspx) คัดลอกรหัสทั้งหมดลบมันแล้วบันทึก ส่งอีกครั้งแล้วบันทึก
  • ไฟล์ผู้ออกแบบควรได้รับการเติมในขณะนี้

2
  • เลือกทั้งหมดในไฟล์ผู้ออกแบบและลบทุกอย่างในไฟล์โดยปล่อยว่างไว้จากนั้นบันทึก
  • เลือกทั้งหมดในไฟล์ ASPX / ASCX และตัดทุกอย่างแล้ววางกลับอีกครั้ง
  • ไฟล์ผู้ออกแบบควรสร้างโค้ดใหม่

1
สิ่งนี้ได้ผลสำหรับฉัน! ฉันยังบันทึกไฟล์. aspx หลังจากตัดทุกอย่างออกไป วางกลับเข้าบันทึกและไฟล์ตัวออกแบบ (ว่างเปล่าก่อนหน้า) ของฉันเต็มไปหมดแล้ว
— DaveD

2

นี่คือประสบการณ์ที่ฉันเลือกโฟลเดอร์เว็บไซต์คลิกขวาในโซลูชัน Explorer เลือกแปลงเป็นแอปพลิเคชันเว็บสำหรับไฟล์ aspx ทั้งหมดที่ไฟล์นักออกแบบจะถูกสร้างขึ้น

เมียร์


2

เพียงเพิ่มรายการคำตอบที่นี่ - ฉันเพิ่งพบปัญหานี้ใน VS2010 (SP1) ด้วยไฟล์. aspx ฉันพยายามเพิ่มและลบการควบคุม ASP มาตรฐาน (ซึ่งทำงานในอดีต) แต่ในที่สุดฉันต้องลบบรรทัด runat = เซิร์ฟเวอร์หนึ่งจากการควบคุมที่มีอยู่ (และบันทึก) เพื่อบังคับให้ไฟล์ดีไซเนอร์สร้างใหม่


2

ฉันพบปัญหาเดียวกันมาหลายปีแล้วทำงานใน Visual Studio 2008 และฉันได้ลอง "แก้ปัญหา" ทุกอย่างใน StackOverflow และบล็อกหลายสิบบล็อกเหมือนที่ฉันแน่ใจว่าพวกคุณทุกคนมี และบางครั้งพวกเขาก็ทำงานและบางครั้งพวกเขาก็ทำไม่ได้เหมือนฉันแน่ใจว่าพวกคุณทุกคนได้เจอกันแล้ว และเห็นได้ชัดว่ามันยังคงเป็นปัญหาใน VS2010 และ VS2012

ในที่สุดสองสามเดือนที่ผ่านมาฉันตัดสินใจว่าเพียงพอแล้วและอีกไม่กี่สัปดาห์ฉันก็สร้างเครื่องมือที่ชื่อว่า "Redesigner" ซึ่งสร้างไฟล์. design มันเป็นโอเพ่นซอร์สภายใต้ใบอนุญาต BSDพร้อมด้วยซอร์สโค้ดที่มีอยู่บน SourceForge - ใช้งานได้ฟรีไม่ต้องขโมยและทำทุกอย่างที่คุณพอใจได้ฟรี และทำในสิ่งที่ Visual Studio ไม่สามารถทำได้บ่อยๆซึ่งสร้างไฟล์. designer อย่างรวดเร็วและเชื่อถือได้

มันเป็นเครื่องมือบรรทัดคำสั่งแบบสแตนด์อะโลนที่แยกไฟล์. aspx และ .ascx ทำการแสดงเวทย์มนตร์ที่จำเป็นทั้งหมดและแยกไฟล์. designer ที่ถูกต้องออกมา มันจะทำการแยกวิเคราะห์และสะท้อนตัวเองเพื่อหลีกเลี่ยงการพึ่งพาโค้ดที่มีอยู่ซึ่งเราทุกคนรู้ดีว่ามันพัง มันเขียนใน C # เทียบกับ. NET 3.5 แต่มันทำให้ปวดเมื่อยเพื่อหลีกเลี่ยงการใช้แม้แต่ System.Web สำหรับสิ่งอื่น ๆ นอกเหนือจากการประกาศประเภทและมันไม่ได้ใช้หรือพึ่งพา Visual Studioเลย

Redesigner สามารถสร้างไฟล์. designer ใหม่ได้ และมีตัวเลือก --verbose เพื่อที่ว่าเมื่อสิ่งต่าง ๆ ผิดพลาดคุณจะได้รับข้อความแสดงข้อผิดพลาดที่ดีกว่า "ข้อยกเว้นประเภท System.Exception ถูกส่งออกไป" และมีตัวเลือก - ตรวจสอบว่าสามารถใช้เพื่อบอกคุณเมื่อไฟล์. design ที่มีอยู่ของคุณเสียหาย - การควบคุมที่ขาดหายไปการประกาศคุณสมบัติที่ไม่ดีไม่สามารถอ่านได้โดย Visual Studio หรือมิฉะนั้นเพียงแค่บอร์กธรรมดา

เราได้ใช้มันในที่ทำงานของฉันเพื่อนำเราออกจากแยมเพื่อส่วนที่ดีขึ้นของเดือนที่แล้วและในขณะที่ Redesigner ยังคงเป็นรุ่นเบต้า ในไม่ช้าฉันตั้งใจจะสร้างปลั๊กอิน Visual Studio เพื่อให้คุณสามารถคลิกขวาเพื่อยืนยันหรือสร้างไฟล์นักออกแบบใหม่ในแบบที่คุณต้องการ แต่ในระหว่างนั้นการใช้งานบรรทัดคำสั่งนั้นค่อนข้างง่ายและจะช่วยให้คุณปวดหัวได้มาก

อย่างไรก็ตามการเดินทางดาวน์โหลดสำเนาของ Redesigner นี้และหยุดดึงออกผมของคุณ คุณไม่จำเป็นต้องใช้มันเสมอไป แต่เมื่อคุณทำคุณจะดีใจที่คุณมีมัน!

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


ดูเหมือนว่า overkill เพื่อการแก้ไขที่ง่าย
— คริส McGrath

1
@ChrisMcGrath อาจ overkill แต่ฉันรู้สึกถึงความเจ็บปวดที่กระตุ้นเครื่องมือนี้ ผมชื่นชมความทุ่มเทของเขาที่จะใส่ในเวลาที่จะสร้างมัน :)
— จอร์แดน Rieger

2

TL; DR;
แก้ไขInheritsคุณสมบัติของ@Pageคำสั่งของหน้า ASPX และกดบันทึก ไฟล์นักออกแบบของคุณควรถูกสร้างใหม่

ตรวจสอบให้แน่ใจว่าInherits= <namespace>. <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 ได้!


2

ภายใน Visual Studio:

1) ลบไฟล์ aspx.designer.cs ของคุณ

2) คลิกขวาที่ไฟล์ aspx ของคุณและเลือก "แปลงเป็นแอปพลิเคชันเว็บ" ซึ่งควรเพิ่ม aspx.designer.cs ย้อนหลังและเป็นปัจจุบัน

หากคุณได้รับข้อผิดพลาดว่า:

"การสร้างไฟล์ผู้ออกแบบล้มเหลว: วิธีการหรือการดำเนินการไม่ได้นำมาใช้"

ลองปิด Visual Studio แล้วเปิดโครงการของคุณอีกครั้งแล้วทำตามขั้นตอนที่สองอีกครั้ง

วิธีการสร้าง aspx.designer.cs ใน visual studio?


2
"Convert to Web Application" ไม่มีอยู่ในเมนูบริบทของไฟล์ aspx อย่างน้อยมันไม่ได้อยู่ใน VS Professional 2015
— Chris Walsh

2
  1. ขั้นตอนที่ 1 : เลือกรหัส aspx ทั้งหมดของคุณตัด [CTRL + X] รหัสนั้นและบันทึก

  2. ขั้นตอนที่ 2 : วางรหัสเดียวกันอีกครั้งในหน้าเดียวกันและบันทึกอีกครั้ง

ตอนนี้หน้า. ผู้ช่วยของคุณจะรีเฟรชด้วยตัวควบคุมทั้งหมดในหน้า. aspx


1

ลบไฟล์ designer.cs จากนั้นคลิกขวาที่ไฟล์. aspx และเลือก "แปลงเป็นแอปพลิเคชันเว็บ" หากมีปัญหาเกี่ยวกับการประกาศการควบคุมของคุณเช่นแท็กที่มีรูปแบบไม่ถูกต้องคุณจะได้รับข้อความแสดงข้อผิดพลาดและคุณจะต้องแก้ไขแท็กที่มีรูปแบบไม่ถูกต้องก่อนที่ Visual Studio จะสามารถสร้างไฟล์ดีไซเนอร์ของคุณได้อีกครั้ง

ในกรณีของฉัน ณ จุดนี้ฉันค้นพบว่าปัญหาคือว่าฉันได้ประกาศการควบคุมปุ่มที่ไม่ได้อยู่ในรูปแบบแท็กที่มีคุณลักษณะ runat = "เซิร์ฟเวอร์"


1

นี่เป็นข้อบกพร่องใน IDE; ฉันได้เห็นมันตั้งแต่ VS 2003 วิธีแก้ปัญหานั้นเรียบง่าย

บันทึกไฟล์ของคุณ ออกจาก IDE อย่างสมบูรณ์ (ตรวจสอบให้แน่ใจว่ากระบวนการหยุดทำงาน, mgr งาน)

เปิดโซลูชันอีกครั้งทำให้มาร์กอัพสกปรกบันทึก แก้ไขแล้ว.


1

ฉันมีสองปัญหา ... AJAXControlkit ที่ล้าสมัย - ลบ dll เก่าลบตัวควบคุมเก่าออกจากกล่องเครื่องมือดาวน์โหลดเวอร์ชันใหม่โหลดกล่องเครื่องมือและลากและวางตัวควบคุมใหม่บนหน้า (ดูhttp://www.experts-exchange.com /Programming/Language/.NET/Visual_Studio_.NET_2005/Q_24591597.html )

นอกจากนี้ยังมีการสะกดคำผิดในการควบคุมฉลากของฉัน (ใช้ 'class' แทน 'cssclass')

ขอบคุณ


1

ฉันมีปัญหาที่การควบคุมใหม่ของฉันจะไม่สร้างในไฟล์ผู้ออกแบบเมื่อประกาศในไฟล์ .ascx ปัญหาคือว่าฉันประกาศพวกเขาในรหัสหลังด้วย ดังนั้นการลบการประกาศในโค้ดด้านหลังก็แก้ปัญหาของฉันได้


1

หากคุณเป็นเหมือนฉันและคุณเพิ่มไฟล์. ASXX เก่าลงในโครงการล่าสุด คุณอาจจะลืมการควบคุมที่ใช้ในหน้า

ถ้าเป็นเช่นนั้นสิ่งแรกหากมีหลายไฟล์ที่คุณกำลังติดตั้ง; แก้ไขทีละครั้งก่อน

เมื่อคุณคอมไพล์แก้ไขข้อผิดพลาดที่สร้างขึ้น พวกเขาอาจจะเป็นข้อผิดพลาดเดียวกันในไฟล์ทั้งหมด

ถัดไปถ้าคุณมีไฟล์ Designer ลบไฟล์ทั้งหมดที่แทรกไว้ ถัดไปตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดอื่น ๆ เมื่อคุณคอมไพล์นอกจากไฟล์ตัวออกแบบ

ในที่สุดคลิกขวาโครงการเว็บของคุณและคลิกที่แปลงเป็นโปรแกรมประยุกต์บนเว็บ สิ่งนี้จะแทรกไฟล์ผู้ออกแบบที่คุณต้องการ

เหล่านี้เป็นขั้นตอนที่ดีที่สุดในการแก้ไขปัญหา


1

สิ่งหนึ่งที่ไม่มีใครกล่าวถึงคือการไปที่หน้า ฉันให้ไฟล์ผู้ออกแบบของฉันหยุดการสร้างใหม่เนื่องจากฉันรวมการควบคุมผู้ใช้ที่ไม่มีอยู่ (ด้วยเหตุผลต่าง ๆ ) และไม่มีสิ่งใดที่แนะนำที่นี่ใช้ได้ ไม่ว่าด้วยเหตุผลใดฉันไม่ได้รับข้อผิดพลาดใด ๆ ใน Visual Studio - นอกจากข้อร้องเรียนเกี่ยวกับข้อเท็จจริงที่ว่าการควบคุมฝั่งไคลเอ็นต์ของฉันไม่มีอยู่เพราะพวกเขาไม่ได้ถูกสร้างใหม่แน่นอน

ใช้เวลาจริงในการเยี่ยมชมหน้าเพื่อรับ ASP.Net เพื่อบอกข้อผิดพลาด


1

สิ่งนี้อาจเกิดขึ้นได้หากคุณอัปเดตเนมสเปซและไม่อัปเดตเนมสเปซในไฟล์ผู้ออกแบบ แก้ไข: อัปเดตเนมสเปซในไฟล์ผู้ออกแบบเช่นกัน


1

ทางออกสำหรับฉันคือ:

ฉันเพิ่งคัดลอกหน้าและวางในส่วนเดียวกันจากนั้นเปลี่ยนชื่อหน้าแรก (ชื่อเดิม) และเปลี่ยนชื่อหน้าที่คัดลอกเป็นหน้าดั้งเดิม ตอนนี้การควบคุมสามารถเข้าถึงได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.