คุณจะบังคับให้ 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.