2009-06-05 31 views
33

Microsoft đã giải thích rằng họ sẽ không được hỗ trợ Edit, Continue dưới CLR x64 trong Visual Studio 2010:Tại sao không chỉnh sửa và tiếp tục hoạt động trên CLR x64?

Khi tạo một Console Application mới Visual C# trong VS2010 cho .NET 4.0, các thiết lập mặc định cho mục tiêu dự án là để nhắm mục tiêu nền tảng x86 thay vì Bất kỳ CPU (MSIL) như Visual Studio 2008 không

[...]

Thêm hỗ trợ đúng đối với ENC để CLR 64-bit được tiếc là một hạng mục công trình lớn và các tính năng khác được ưu tiên hơn cho công việc xung quanh việc thay đổi mục tiêu nền tảng thành x86.

(từ http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=455103)

Mô tả trên Microsoft Connect làm cho nó xuất hiện như thể 64-bit Edit, Continue là một sự thay đổi kiến ​​trúc lớn. Câu hỏi của tôi là: những gì là khác nhau về x64 mà làm cho EnC khó khăn?

Tôi không thể tìm thấy nhiều chi tiết kỹ thuật trên web, ngoài "EnC 64 bit không hoạt động".

+2

Blog ngày 26 tháng 6 năm 2013: http://blogs.msdn.com/b/dotnet/archive/2013/06/26/announcing-the-net-framework-4-5-1-preview.aspx '" Bây giờ chúng ta có x64 Edit and Continue (EnC) có sẵn trong Visual Studio 2013 Preview "' – gmaran23

Trả lời

19

Chỉnh sửa và tiếp tục yêu cầu trình biên dịch phải vá các tệp thực thi đang chạy. Điều này thường được thực hiện bằng cách thay thế tất cả các chức năng thay đổi. Rõ ràng, các phiên bản JITted của chúng cũng phải được loại bỏ, và người gọi điều chỉnh đến các vị trí mới.

Điều này đặc biệt khó đối với x64, có thể là khó như trên x86. Nhưng không giống như x86, điều này chỉ đơn giản là chưa được thực hiện cho x64. Và sự khác nhau giữa x86 và x64 là đủ lớn mà bạn không thể chỉ đơn giản là lấy mã x86 ENC và thay đổi mỗi 4 trong một 8.

+5

Đó là một lời giải thích hợp lý.Nhưng cho rằng VS2005, VS2008 và bây giờ VS2010 đã làm việc 32-bit EnC, và mỗi khung và IDE mới này có nhiều chức năng mới ấn tượng ở các khu vực khác, tôi tự hỏi liệu họ có thể tìm thấy một chút thời gian để chi tiêu cho EnC 64 bit. –

+15

Gỡ lỗi x64 đúng cách đã được "sắp tới" kể từ khi VS2005 được công bố lần đầu tiên. Cho đến nay chúng ta đã thấy 3 phiên bản IDE chính và các nhà phát triển 64 bit vẫn được đối xử như các công dân hạng hai. – nathanchere

+4

Làm cho bốn; VS2012 cũng không hỗ trợ. –

4

bài viết trên blog này mở rộng về những gì MSalters nói: http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

Về cơ bản, Microsoft quan tâm nhiều hơn đến việc cải thiện các công cụ gỡ lỗi x86 (ví dụ Intellitrace) hơn là cải thiện các công cụ gỡ lỗi x64. Điều này là khá đáng lo ngại vì nó có vẻ như Intellitrace cũng sẽ phải được chuyển đến x64 tại một số điểm, mà có khả năng sẽ trì hoãn hơn nữa cải tiến để gỡ lỗi x64.

0

Dường như khung .NET mới hỗ trợ điều này. Từ phần Chi tiết của .NET Framework 4.5.1 Preview

.NET Framework 4.5.1 Preview ... bao gồm các đáng kể ... cải tiến:

...
64-bit Edit, Continue
.. .

Vẫn không hoạt động trong Visual Studio 2012 với .NET 4.5.1 Preview được cài đặt.

Các vấn đề liên quan