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

Есть что-то вроде JRebel для .NET?

JRebel - это инструмент для Java, который может автоматически заменять новые версии классов на запущенную JVM. Не только можно изменить реализацию метода, но и изменить их подписи, добавить новые или удалить существующие методы, а также добавить/удалить поля. Единственное, что не может сделать, - это изменить иерархию классов на лету. Это настоящее благо для разработки веб-приложений в частности.

Могу ли я найти что-нибудь подобное для .NET?

4b9b3361

Ответ 1

В мире .net нет такой вещи.. не так сильно. Есть некоторые вещи, такие как Edit и Continue, но это похоже на "Горячую замену" на Java и ничего больше. Проблема в .net у вас есть вся модель .dll(s) с их версиями и зависимостями между dll, указывающими на определенную версию, поэтому заменить dll невозможно без замены всех.

Обходным решением будет что-то вроде компиляции классов, добавлением множества перенаправлений сборки, каким-то образом выгружает и загружает старую dll, но это чертовски сложно.

Имейте в виду, что в java после реализации "модуля" JSR, возможно, в java 9 у нас не будет JRebel.

Ответ 2

Таких вещей для .Net еще нет. Тем временем вы можете попробовать NCrunch (http://www.ncrunch.net/), который запускает ваши тесты в фоновом режиме и в момент разрыва или проведения теста это сообщается в результатах теста, поэтому вам не нужно ждать восстановления и выполнения теста, как это происходит в реальном времени.

Ответ 3

Хорошо, есть функция сборки с VS 2005, которая называется "Редактировать и продолжить". Вы можете взглянуть... http://msdn.microsoft.com/en-us/library/ms379578(VS.80).aspx.

Я думаю, что это не так сложно, как JRebel.

Ответ 4

Отражение встроено в .NET и должно иметь возможность выполнять большинство из этих вещей (запись/изменение вещей во время выполнения).

Это не будет так отполировано, а задача будет готова как JRebel, но опять же две структуры имеют разные структуры для начала. Возможно, нереалистично думать о них как о эквивалентах.

IMHO, замена времени выполнения как стандартная практика звучит как хороший способ повредить время выполнения. Если вам нужна эта функция горячей замены, возможно, вам лучше выбрать интерпретируемый язык вместо скомпилированного.

Кроме того, сеанс обычно следует избегать. Если вам нужно использовать его для ASP.NET, вы можете использовать несколько разных поставщиков вне коробки вместо того, чтобы обрабатывать их, или даже использовать профили. Страница MSDN для государственного управления

Ответ 6

Там Rebel.NET похож, но для этого требуется пересоздание двоичных файлов и не может изменять код во время выполнения.