Подтвердить что ты не робот

Почему в X64 CLR не работает Edit и Continue?

Microsoft объяснила, что они не будут поддерживать редактирование и продолжение в среде x64 CLR в Visual Studio 2010:

При создании нового приложения Visual С# Console в VS2010 для .NET 4.0 целевые настройки по умолчанию для проекта нацелены на платформу x86 вместо Any CPU (MSIL), например Visual Studio 2008,

[...]

Добавление истинной поддержки EnC в 64-разрядную среду CLR, к сожалению, является большим рабочим элементом, а другие функции были приоритетными по сравнению с этим при работе вокруг изменения целевой платформы платформы x86.

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

Описание в Microsoft Connect выглядит так, как будто 64-битное Edit и Continue является основным архитектурным изменением. Мой вопрос: что отличается от x64, что затрудняет работу EnC?

Мне не удалось найти много информации о технических подробностях в Интернете, кроме "64-разрядного EnC не работает".

4b9b3361

Ответ 1

"Редактировать и продолжить" требует, чтобы компилятор исправлял исполняемый исполняемый файл. Обычно это делается путем замены всех измененных функций. Очевидно, что их версии JIT также должны быть отброшены, а вызывающие абоненты настроены на новые местоположения.

Это не особенно сложно для x64, возможно, примерно так же сложно, как и на x86. Но в отличие от x86, это просто еще не сделано для x64. И различия между x86 и x64 достаточно велики, что вы не можете просто взять код EnC x86 и изменить каждый 4 в 8.

Ответ 2

Этот пост в блоге расширяет то, что сказал MSalters: http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

В принципе, Microsoft больше заинтересована в улучшении средств отладки x86 (например, Intellitrace), чем в улучшении средств отладки x64. Это довольно тревожно, так как кажется, что Intellitrace также придется портировать на x64 в какой-то момент, что, скорее всего, приведет к дальнейшему замедлению отладки x64.

Ответ 3

Похоже, что это поддерживает новая платформа .NET. Из раздела сведений .NET Framework 4.5.1 Предварительный просмотр

В .NET Framework 4.5.1 Preview... включены следующие значимые... улучшения:

...
64-битное редактирование и продолжение
...

Все еще не работает в Visual Studio 2012 с установленным .NET 4.5.1.