ฉันจะเปิดโครงการ MVC เก่าใน Visual Studio 2012 หรือ Visual Studio 2013 ได้อย่างไร


152

ฉันมีโครงการ ASP.NET MVC 2 เก่าซึ่งฉันไม่ต้องการอัพเกรดเป็น MVC 3 หรือ MVC 4 ฉันกำลังทำงานกับเครื่องใหม่ที่ใช้ Windows 8, Visual Studio 2012 และ Visual Studio 2013 เมื่อฉันพยายามเปิด MVC 2 โครงการใน VS 2012 หรือ VS 2013 ฉันได้รับข้อผิดพลาด:

โครงการนี้เข้ากันไม่ได้กับ Visual Studio รุ่นปัจจุบัน

โครงการจะถูกยกเลิกการโหลดและเป็นสีเทาในโซลูชัน Explorer ฉันไม่ต้องการติดตั้งสำเนาของ Visual Studio อื่น ฉันจะเปิดโครงการ MVC เก่าใน Visual Studio รุ่นใหม่ได้อย่างไร


ทำไมคุณถามคำถามนี้ถ้าคุณรู้
ไบรอันไวท์

30
@BrianWhite เมื่อฉันพบปัญหานี้เมื่อเช้านี้ฉันทำการค้นหาโดย Google อย่างรวดเร็วและไม่ได้เกิดอะไรขึ้น เนื่องจากฉันคุ้นเคยกับการทำงานของไฟล์โครงการ VS ฉันจึงคาดเดาสาเหตุและแนวทางแก้ไขที่เป็นไปได้ เมื่อฉันตรวจสอบวิธีการแก้ปัญหาการทำงานที่ฉันต้องการแบ่งปันความรู้ที่ จากหลักเกณฑ์ของเจฟฟ์คุณสามารถถามและตอบคำถามของคุณเองได้
ahsteele

1
ขอบคุณฉันไม่รู้ มีหลายสิ่งที่ฉันไม่ได้โพสต์เพราะฉันไม่เห็นใครมองหาที่นี่
ไบรอันไวท์

8
ขอบคุณสำหรับการโพสต์โซลูชัน ตอบคำถามของตัวเองเมื่อพบวิธีแก้ปัญหาเพิ่มความรู้ให้กับชุมชน
pomarc

คำตอบ:


291

การเปิดโครงการ MVC ที่ไม่ได้รับการสนับสนุนในVisual Studio 2012หรือ Visual Studio 2013 นั้นค่อนข้างง่ายในการทำสองขั้นตอน ในความเป็นจริงตามที่ความคิดเห็นของ bytebender ระบุขั้นตอนเดียวกันเหล่านี้ควรนำไปใช้และทำงานกับโครงการ MVC 1 อย่างไรก็ตามฉันไม่ได้ทดสอบพวกเขาและดังนั้นจึงไม่สามารถรับประกันได้ว่าพวกเขาทำงานได้จริง

สมมติว่าคุณยังไม่ได้ดำเนินการขั้นตอนที่หนึ่งคือการดาวน์โหลดและติดตั้งMVC 1 , MVC 2หรือMVC 3 (ปิด Visual Studio ก่อนที่จะเริ่มการติดตั้ง)

เมื่อคุณมีรสชาติที่เหมาะสมของ MVC ที่ติดตั้งแล้วโครงการจะยังไม่โหลดใน VS 2012 นี่เป็นเพราะโครงการ ASP.NET MVC เป็นโครงการย่อยของประเภทโครงการเว็บแอปพลิเคชัน ซึ่งหมายความว่าโครงการนี้มีเพิ่มเติมและคุณลักษณะเพิ่มเติมที่พร้อมใช้งานเมื่อใช้ภายใน Visual Studio

ทั้ง Visual Studio 2012 และ Visual Studio 2013 มีข้อ จำกัด ในการทำงานร่วมกันได้กับ ASP.NET MVC และโครงการประเภทอื่น น่าเสียดายที่การติดตั้งบิต MVC เก่านั้นไม่ได้เปลี่ยนแปลง Visual Studio 2012 เข้ากันได้กับ ASP.NET MVC 3 และ 4 รสชาติของโปรเจ็กต์ Visual Studio 2013 เข้ากันได้กับ MVC 4 และ MVC 5

เพื่อให้โครงการโหลดคุณจะต้องแก้ไขไฟล์โครงการ โดยคลิกขวาที่โครงการที่ไม่ได้โหลดและเลือกแก้ไข ซึ่งจะเปิดไฟล์โครงการเป็นไฟล์ข้อความ XML ค้นหาProjectTypeGuidsโหนดที่ควรมีลักษณะดังนี้:

<ProjectTypeGuids>
    {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

ลบ Guid Project ที่เหมาะสมออกจากรายการ:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (แสดงในตัวอย่างด้านบน)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

ด้วย GUID ที่เหมาะสมลบออกProjectTypeGuidsควรมีลักษณะคล้ายกับนี้:

<ProjectTypeGuids>
    {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

บันทึกไฟล์และปิดตัวแก้ไขไฟล์โครงการ Visual Studio คลิกขวาที่โครงการแล้วเลือกโหลดซ้ำ หากโครงการไม่รีโหลดใกล้และเปิด Visual Studio อีกครั้ง ตอนนี้คุณควรจะสามารถทำงานกับโครงการ ASP.NET MVC เก่าของคุณใน Visual Studio เวอร์ชันใหม่ของคุณได้แล้ว

สิ่งสำคัญที่ควรทราบคือหลังจากการปรับเปลี่ยน Visual Studio เหล่านี้ไม่ทราบว่านี่เป็นโครงการ ASP.NET MVC ดังนั้นคุณสมบัติเฉพาะโครงการเช่น "เพิ่มตัวควบคุมดู ฯลฯ " จะไม่ปรากฏในเมนู


11
ใช้งานได้กับ MVC 1 เช่นกัน ฉันไม่สามารถโหลดซ้ำได้หลังจากแก้ไขไฟล์โครงการแล้ว ฉันต้องปิดและเปิดสตูดิโอภาพใหม่จากนั้นก็สามารถโหลดโครงการ MVC 1 ได้ ขอบคุณ! +1
bytebender

1
! ที่ดีเยี่ยม ทำงานได้สำหรับฉันด้วยการเพิ่มเล็ก ๆ ... ใน. cspproj ของฉันฉันมี projectTypeGuid พิเศษ: {F85E285D-A4E0-4152-9332-AB1D724D3325}; ซึ่งจำเป็นต้องลบออก
Kevin Won

2
@JookyDFW ปัญหากับยูทิลิตี้การโยกย้ายก็คือว่ามันเป็นยูทิลิตี้การโยกย้าย ด้วยเหตุผลที่ไม่ได้ระบุในคำถามสำหรับโครงการนี้โดยเฉพาะฉันไม่สามารถอัปเกรดจาก MVC 2 ได้แม้ว่าโครงการจะไม่สามารถอัปเกรดได้ฉันยังต้องทำงานต่อ การแก้ไขไฟล์โครงการตามที่อธิบายไว้เป็นวิธีที่ดีที่สุด (เท่านั้น) ในการทำงานกับโครงการ MVC 2 ใน VS 2012
ahsteele

3
@ RyanShripat ที่ไม่ใช่ประสบการณ์ของฉันเลย ต้องติดตั้ง ASP.NET MVC รุ่นที่เก่ากว่า แต่ VS 2010 จะไม่มีผลกับข้างต้น
ahsteele

2
@Nanu ขอบคุณสำหรับความคิดเห็นเพื่อให้ชัดเจนว่าเป็นสิ่งที่ฉันหมายถึงโดย: " สิ่งสำคัญที่ควรทราบคือหลังจากการปรับเปลี่ยนเหล่านี้ Visual Studio ไม่ทราบว่านี่เป็นโครงการ ASP.NET MVC ดังนั้นคุณสมบัติเฉพาะโครงการ เช่น "เพิ่มตัวควบคุมดู ฯลฯ " จะไม่ปรากฏในเมนู "
ahsteele

4

ฉันใช้วิธีการของ @ ahsteele (ขอบคุณและ 2x + 1s!) แต่มีข้อผิดพลาดอีกอย่างหนึ่ง: -

.csproj: ข้อผิดพลาด: การดำเนินการไม่เสร็จสมบูรณ์ สตริงคลาสไม่ถูกต้อง

ฉันไม่สามารถหาอ้างอิงใด ๆ สำหรับสาเหตุที่แท้จริงของที่ แต่ฉันก็สามารถที่จะได้รับ VS2012RTM <ProjectGuid>โหลดโครงการประสบความสำเร็จโดยการเปลี่ยน (ไม่มีความคิดว่าสิ่งนี้เกิดขึ้นได้อย่างไร - เป็นส่วนหนึ่งของโซลูชันที่มีขนาดใหญ่และ VS08, VS10, VS11 Beta และ VS2012RC ได้อัปเกรดทั้งหมด.csprojและ.slnตลอดเวลา


1

ใน VS2017 การแก้ปัญหาคือทำให้มันเป็นอย่าง<ProjectTypeGuids></ProjectTypeGuids>นั้น

ไม่มีช่องว่างระหว่างสุภาพสตรีและสุภาพบุรุษมิฉะนั้นจะเสียเวลา 48 ชั่วโมง

ความนับถือ

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