是否有类似JRebel for .NET的东西?

时间:2010-08-11 12:59:47

标签: .net jrebel

JRebel是一个Java工具,可以自动将新版本的类交换到正在运行的JVM。不仅可以更改方法实现,还可以更改其签名,添加新的或删除现有方法,以及添加/删除字段。关于唯一不能做的是允许在运行中更改类层次结构。特别是对于Web应用程序开发来说,这是一个真正的福音。

我能找到类似.NET的东西吗?

6 个答案:

答案 0 :(得分:2)

.net世界中没有这样的东西......不是那么强大......有一些像Edit和Continue这样的东西,但这就像Java中的“Hot replace”,仅此而已。 问题是在.net中你有.dll的整个模型,它们的版本和dll之间的依赖关系指向特定的版本,因此不能替换所有的替换dll。

解决方法就像编译类,添加大量的程序集重定向,以某种方式卸载并加载旧的dll,但这很难。

请记住,在java之后的“模块”JSR实现可能在java 9中我们也不会有JRebel。

答案 1 :(得分:2)

还没有.Net这样的东西。在此期间,您可以尝试NCrunch(http://www.ncrunch.net/),它在后台运行您的测试,当您中断或进行测试时,它会在测试结果中报告,因此您无需等待用于重建和测试执行,因为它是实时发生的。

答案 2 :(得分:0)

自VS 2005以来,有一个内置功能称为“编辑并继续”。你可以看看...... http://msdn.microsoft.com/en-us/library/ms379578(VS.80).aspx

我认为它并不像JRebel那样软化。

答案 3 :(得分:0)

反射内置于.NET中,应该能够完成大部分工作(在运行时编写/更改内容)。

它不会像JRebel那样完善和任务准备就绪,但是这两个框架又有不同的结构。将它们视为等价物可能是不现实的。

恕我直言,运行时替换作为一种标准实践听起来像是一种破坏运行时的好方法。如果您需要这种热交换功能,也许您最好选择解释语言而不是编译语言。

此外,会话通常是要避免的。如果必须将它用于ASP.NET,则可以使用几个不同的开箱即用提供程序而不是进程中的提供程序,甚至可以使用配置文件。 MSDN page for state manangement

答案 4 :(得分:0)

答案 5 :(得分:-1)

Rebel.NET类似,但这需要重建二进制文件,并且在执行期间无法更改代码。