安德斯·海尔斯伯格的C# 4.0 REPL

40

11
我知道这个很老了,但是对于像我一样正在寻找C# Roslyn REPL(基本上是Anders在使用的那种)的下一个人,请访问:http://www.microsoft.com/download/en/details.aspx?id=27746,安装后重新启动 Visual Studio...从链接中可以得知:“通过调用菜单中的“视图->其他窗口->C# 交互”即可在 Visual Studio 中找到名为 C# Interactive 的新工具窗口。” - ckozl
5
链接已失效。看起来微软已经停用了2010版本。如果你有2012版本,你可以尝试这个链接:http://www.microsoft.com/en-us/download/details.aspx?id=34685。 - John Fouhy
ScriptCS似乎是最好的独立REPL,建立在Roslyn API之上,并使用NuGet作为包管理器:https://github.com/scriptcs/scriptcs/ - dperish
10个回答

25

这个REPL演示是“接下来可能发生的事情”的一部分,也就是指在4.0之后,在.NET 5.0或类似版本中。

并不是4.0的功能,并且从未成为过。


我认为这个演示是对Mono中类似技术的回应,链接如下: http://tirania.org/blog/archive/2008/Sep-10.html - plinth
1
是的,Mono的repl非常不错(对于那些不知道它的人,请获取mono,然后monodir/bin/gsharp或/bin/gsharp)。但我想念像Anders那样添加函数的能力。 - George
作为替代,我目前正在使用http://www.sliver.com/dotnet/SnippetCompiler和Mono的REPL,但是拥有一个体面的C# REPL真的很不错。 - George
@DamianPowell 取决于你的角度 ;p 当时,OP 期望 REPL 包含在 .NET 4.0 BCL 的一部分中,但显然这不是 4.0 功能。 - Marc Gravell

9

值得一提的是,Mono项目已经有了一个C# REPL,我倾向于用它来进行那些偶尔需要的小检查。看一下吧。此外,如果我正在测试一个想法,我不确定Mono是否能够很好地处理它,并且不值得开始一个新的测试项目,那么Snippet Compiler总是派上用场。


4

立即窗口(调试>窗口>立即 Ctrl+D, I)是一个非常好的内置替代品。它需要您启动IDE并在某个地方设置断点。

它可以为您提供想要进行实验的上下文。


1
即时模式无法使用C#的Lambda表达式 :( - bradgonesurfing
1
这是一个难以接受的事实:Lambda表达式确实很好用,在即时窗口和编辑并继续中使用它们将会使Visual Studio体验更加出色。 - Kevin Driedger
立即窗口与REPL相比简直是个笑话 - 它的设计只是为了帮助你进行调试,仅此而已。一个真正的REPL总是可用的,一旦你加载了所有依赖项,就没有任何限制。在立即窗口中,你不能创建类,不能创建方法,不能重新定义代码,也不能使用Lambda等。你只能调用方法,更改属性的值和创建变量。仅此而已。如果你真正使用过REPL,你应该知道立即窗口远远不能替代它 - 一个三轮车无法取代一辆摩托车。 - Unknown
真正的问题是使用一种能够了解系统状态的工具进行代码实时编辑...可以将其视为带有代码浏览器的REPL。在我看来,Smalltalk是我们应该追求的模型(是的,可以添加/删除字段/方法/类,编辑方法体,并检查程序的状态)。 - Kevin Driedger

3
马克的回答完全正确,像C#这样的repl或脚本的可能性已经在Eric Lippert的两篇博客文章中讨论过: 我要补充的是,2010 CTP确实包含一个f# repl(对于c#来说用处不大,但如果您对BCL或CLR的某些方面感兴趣,它可能足以满足您的需求)。
我发现在许多情况下,LINQPad弥补了REPL的缺失。不过,将其集成到Visual Studio中,以便更轻松地与现有代码库进行交互,会更好。

1
提示关于 F# Interactive 是非常有帮助的。我经常使用它快速测试正则表达式类、网络类等等。 - Armentage
2
当我想在框架中测试某些东西时,我倾向于使用PowerShell。现在我们有了包管理器控制台,这变得更加容易了。显然,这对于测试C#语言中的某些内容是没有帮助的。 - Damian Powell

2
命令行 REPL
要在 Visual Studio 之外玩转 C# REPL,请打开 VS2015 开发人员命令提示符 并输入命令 csi 开始交互式会话。这里 是可以传递给 csi 的参数列表。 注意:csi 代表 "CSharp Interactive"。
您还可以通过导航到 View > Other Windows > C# Interactive 直接从 Visual Studio 打开交互窗口。
请查看 Roslyn Wiki 上的 C# Interactive Window

2
我刚发布了一个VisualStudio扩展,它提供了一个REPL环境,可以在VisualStudio中进行编程(即一个带有.NET和VisualStudio的C# REPL环境)。
除了能够编写和执行快速的C#代码片段(在REPL环境中),您还可以实时编程VisualStudio IDE!
您可以使用VisualStudio的扩展管理器(搜索C# REPL)或通过VisualStudio Gallery页面上的下载链接安装它:VisualStudio C# REPL VisualStudio C# REPL页面还包含更多详细信息和代码示例。
此扩展还有一个Reddit主题讨论(其中包含更多代码示例):Reddit thread on this extension 请告诉我您对此的看法。

有计划将此更新到VS 2013吗? - cori
是的,我认为现在是时候这样做了。我已经添加了此问题以跟踪它(https://github.com/o2platform/FluentSharp.VisualStudio/issues/1)。这是开源的,所以如果您(或其他人)能够提供帮助,那将是非常好的。 - Dinis Cruz

2
看看这个C# REPL脚本环境,它是快速运行C#脚本(以及学习编程)的好方法。

1

0

有时候我想尝试一些.NET API,而不是纠结于C#语言的语法。(API中的细节比语言本身更多。)如果你只是在寻找.NET的REPL,那么老牌的PowerShell永远陪伴着你。

C#:

using System;
using System.Text;

Convert.ToBase64String(Encoding.UTF8.GetBytes("Overflow"));

PowerShell:

[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("Overflow"))

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接