Làm cách nào để mở một dự án MVC cũ trong Visual Studio 2012 hoặc Visual Studio 2013?


152

Tôi có một dự án ASP.NET MVC 2 cũ mà tôi không muốn nâng cấp lên MVC 3 hoặc MVC 4. Tôi đang làm việc trên một máy mới chạy Windows 8, Visual Studio 2012 và Visual Studio 2013. Khi tôi cố gắng mở MVC 2 dự án trong VS 2012 hoặc VS 2013 tôi nhận được lỗi:

Dự án này không tương thích với phiên bản hiện tại của Visual Studio

Dự án sau đó được dỡ tải và chuyển sang màu xám trong Solution Explorer. Tôi không muốn cài đặt một bản sao khác của Visual Studio. Làm cách nào tôi có thể mở một dự án MVC cũ trong phiên bản mới của Visual Studio?


Tại sao bạn hỏi câu hỏi này nếu bạn biết?
Brian White

30
@BrianWhite Khi tôi gặp phải vấn đề này sáng nay, tôi đã tìm kiếm nhanh trên Google và không tìm thấy gì. Vì tôi quen với cách các tệp dự án VS hoạt động, tôi đã đoán được nguyên nhân và giải pháp tiềm năng. Khi tôi xác minh giải pháp đó có hiệu quả, tôi muốn chia sẻ kiến ​​thức đó. Dựa trên hướng dẫn của Jeff, bạn có thể hỏi và trả lời câu hỏi của mình .
ahsteele

1
Cảm ơn, tôi không biết điều đó. Có một số điều tôi chưa đăng vì tôi không thấy ai tìm kiếm ở đây.
Brian White

8
ahsteele, cảm ơn bạn đã đăng giải pháp. Trả lời câu hỏi của chính mình, khi tìm ra giải pháp, bổ sung kiến ​​thức cho cộng đồng.
pomarc

Câu trả lời:


291

Mở một dự án MVC không được hỗ trợ trong Visual Studio 2012 hoặc Visual Studio 2013 thực sự khá dễ thực hiện với hai bước. Trong thực tế, như nhận xét của bytebender chỉ ra , các bước tương tự này nên được áp dụng và làm việc cho các dự án MVC 1. Tuy nhiên, tôi đã không kiểm tra chúng và do đó không thể đảm bảo rằng chúng thực sự hoạt động.

Giả sử rằng bạn chưa thực hiện nên bước một là tải xuống và cài đặt MVC 1 , MVC 2 hoặc MVC 3 (đóng Visual Studio trước khi bắt đầu cài đặt).

Khi bạn đã cài đặt thích hợp MVC, dự án sẽ vẫn không tải trong VS 2012. Điều này là do các dự án ASP.NET MVC là một kiểu con dự án của loại dự án Ứng dụng Web. Điều này có nghĩa là dự án có thêm các tính năng bổ sung và các tính năng có sẵn cho nó khi được sử dụng trong Visual Studio.

Cả Visual Studio 2012 và Visual Studio 2013 đều bị hạn chế về khả năng tương thích ngược với ASP.NET MVC và các loại dự án khác. Thật không may, cài đặt các bit MVC cũ không thay đổi điều đó. Visual Studio 2012 tương thích với các hương vị dự án ASP.NET MVC 3 và 4. Visual Studio 2013 tương thích với MVC 4 và MVC 5.

Để tải dự án, bạn sẽ phải sửa đổi tệp dự án. Để làm như vậy, nhấp chuột phải vào dự án không tải và chọn Chỉnh sửa. Cái nào sẽ mở tệp dự án dưới dạng tệp văn bản XML. Tìm ProjectTypeGuidsnút trông giống như thế này:

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

Xóa Hướng dẫn dự án phù hợp khỏi danh sách:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (hiển thị trong ví dụ ở trên)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

Với GUID thích hợp, loại bỏ ProjectTypeGuidssẽ trông giống như thế này:

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

Lưu tệp và đóng trình chỉnh sửa tệp dự án Visual Studio. Nhấp chuột phải vào dự án và chọn tải lại. Nếu dự án không tải lại đóng và mở lại Visual Studio. Bây giờ bạn có thể làm việc với dự án ASP.NET MVC cũ trong phiên bản Visual Studio mới của bạn.

Một điều quan trọng cần lưu ý là sau những sửa đổi này, Visual Studio không biết rằng đây là một dự án ASP.NET MVC; do đó, các tính năng dành riêng cho dự án như "Thêm Trình điều khiển, Chế độ xem, v.v." sẽ không có mặt trong thực đơn.


11
Điều này cũng hoạt động cho MVC 1. Tôi không thể tải lại sau khi chỉnh sửa tệp dự án. Tôi đã phải đóng và mở lại studio hình ảnh và sau đó nó có thể tải dự án MVC 1. Cảm ơn! +1
bytebender

1
thông minh! hoạt động với tôi với một bổ sung nhỏ ... trong .cspproj của tôi, tôi đã có thêm một dự ánTypeGuid: {F85E285D-A4E0-4152-9332-AB1D724D3325}; mà cần phải được loại bỏ.
Kevin Won

2
@JookyDFW vấn đề với tiện ích di chuyển là nó là một tiện ích di chuyển . Vì những lý do không được liệt kê trong câu hỏi cho dự án cụ thể này, tôi không thể nâng cấp từ MVC 2. Mặc dù dự án không thể nâng cấp nhưng tôi vẫn cần phải làm việc với nó. Sửa đổi tệp dự án như đã phác thảo là cách tốt nhất (duy nhất?) Để làm việc với dự án MVC 2 trong VS 2012.
ahsteele

3
@RyanShripat đó không phải là kinh nghiệm của tôi. Các phiên bản cũ hơn của ASP.NET MVC phải được cài đặt nhưng VS 2010 không ảnh hưởng đến những điều trên.
ahsteele

2
@Nanu cảm ơn bạn đã bình luận, rõ ràng đó là ý của tôi: " Một điều quan trọng cần lưu ý là sau khi sửa đổi, Visual Studio không biết rằng đây là một dự án ASP.NET MVC, do đó, các tính năng dành riêng cho dự án như "Thêm Trình điều khiển, Chế độ xem, v.v." sẽ không có trong các menu. "
ahsteele

4

Tôi đã sử dụng phương pháp của @ ahsteele (cảm ơn và 2x + 1!), Nhưng đã có thêm một lỗi: -

.csproj: error: Không thể hoàn thành thao tác. Chuỗi lớp không hợp lệ

Tôi không thể tìm thấy bất kỳ trích dẫn nào cho nguyên nhân thực sự của điều đó, nhưng tôi đã có thể lấy VS2012RTM để tải dự án thành công bằng cách thay đổi <ProjectGuid>. (Không biết làm thế nào điều này xảy ra - một phần của một giải pháp lớn và VS08, VS10, VS11 Beta và VS2012RC đều đã nâng cấp .csproj.slntheo thời gian.


1

Trong VS2017, giải pháp là làm cho nó trở nên như <ProjectTypeGuids></ProjectTypeGuids>vậy.

Không có khoảng cách ở giữa phụ nữ và quý ông, nếu không sẽ lãng phí 48 giờ thời gian của bạn.

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.