Почему не редактировать и продолжить работу на 64-разрядной среде CLR?
Microsoft объяснила, что они не будут поддерживать Edit и Continue в среде x64 CLR в Visual Studio 2010:
При создании нового консольного приложения Visual C# в VS2010 для.NET 4.0 целевые параметры по умолчанию для проекта должны быть нацелены на платформу x86 вместо любого ЦП (MSIL), как это делает Visual Studio 2008
[...]
К сожалению, добавление истинной поддержки EnC в 64-битный CLR является большим рабочим элементом, и другим функциям было уделено приоритетное внимание в связи с изменением цели платформы на x86.
(с http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=455103)
Описание в Microsoft Connect создает впечатление, будто 64-битное редактирование и продолжение являются серьезным архитектурным изменением. Мой вопрос: что отличает x64 от EnC?
Я не смог найти много технических деталей в Интернете, кроме "64-битный EnC не работает".
3 ответа
Для редактирования и продолжения необходимо, чтобы компилятор исправил исполняемый файл. Обычно это делается путем замены всех измененных функций. Очевидно, что их версии JITted также должны быть отброшены, а вызывающие абоненты настроены на новые места.
Это не особенно сложно для x64, вероятно, примерно так же сложно, как и для x86. Но в отличие от x86, это просто еще не было сделано для x64. И различия между x86 и x64 достаточно велики, так что вы не можете просто взять код x86 EnC и менять каждые 4 на 8.
Этот пост в блоге расширяет сказанное 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.
Похоже, новый.NET Framework поддерживает это. Из раздела сведений о .NET Framework 4.5.1 Preview
.NET Framework 4.5.1 Preview ... включает в себя следующие важные... улучшения:
...
64-битное редактирование и продолжение
...
Все еще не работает в Visual Studio 2012 с установленным предварительным просмотром.NET 4.5.1.