C# REPL outside Visual Studio

2019-03-09 21:57发布

F# has a REPL (read–eval–print loop) F# Interactive, C:\Program Files (x86)\Microsoft F#\v4.0\Fsi.exe.

I understand C# now has its own interactive REPL, as released with Roslyn. How do I open outside Visual Studio? Where is csi.exe?

6条回答
我命由我不由天
2楼-- · 2019-03-09 22:41

C# Interactive window and csi.exe REPL were added to Visual Studio 2015 Update 1 (emphasis mine):

Introducing Interactive

The Interactive Window is back! The C# Interactive Window returns in Visual Studio 2015 Update 1 along with a couple other interactive treats:

  • C# Interactive. The C# Interactive window is essentially a read-eval-print-loop (REPL) that allows you to play and explore with .NET technologies while taking advantage of editor features like IntelliSense, syntax-coloring, etc. Learn more about how to use C# Interactive on Channel 9 or by reading our beginner’s walkthrough.

  • csi. If you don’t want to open Visual Studio to play around with C# or run a script file, you can access the interactive engine from the Developer Command Prompt. Type csi /path/myScript.csx to execute a script file or type simply csi to drop inside the command-line REPL.

  • Scripting APIs. The Scripting APIs give you the ability to execute snippets of C# code in a host-created execution environment. You can learn more about how to create your own C# script engine by checking out our code samples.

See What’s New in Visual Studio 2015 Update 1 for .NET Managed Languages.


https://www.visualstudio.com/en-us/news/vs2015-update1-vs.aspx

>csi
Microsoft (R) Visual C# Interactive Compiler version 1.1.0.51109
Copyright (C) Microsoft Corporation. All rights reserved.

Type "#help" for more information.
> #help
Keyboard shortcuts:
  Enter         If the current submission appears to be complete, evaluate it.  Otherwise, insert a new line.
  Escape        Clear the current submission.
  UpArrow       Replace the current submission with a previous submission.
  DownArrow     Replace the current submission with a subsequent submission (after having previously navigated backwards).
REPL commands:
  #help         Display help on available commands and key bindings.
Script directives:
  #r            Add a metadata reference to specified assembly and all its dependencies, e.g. #r "myLib.dll".
  #load         Load specified script file and execute it, e.g. #load "myScript.csx".
>
> Enumerable.Range(10)
(1,12): error CS7036: There is no argument given that corresponds to the required formal parameter 'count' of 'Enumerable.Range(int, int)'
> Enumerable.Range(1, 10)
RangeIterator { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
查看更多
劳资没心,怎么记你
3楼-- · 2019-03-09 22:41

The only executable I found is C:\Program Files (x86)\Microsoft Codename Roslyn CTP\Binaries\rcsi.exe, which can execute .csx files. But it doesn't seem to actually support REPL.

查看更多
Rolldiameter
4楼-- · 2019-03-09 22:47

How about scriptcs: http://scriptcs.net/?

There is a REPL and you even get the power of NuGet.

查看更多
手持菜刀,她持情操
5楼-- · 2019-03-09 22:48

It may not be a substitute but I mainly use RoslynPad for quick research and test. I've also used Linqpad. RoslynPad is "A simple C# editor based on Roslyn" according to their website https://roslynpad.net/. You can write small scripts and you can see variables values' and you may also save them.

查看更多
一纸荒年 Trace。
6楼-- · 2019-03-09 22:49

I created exactly what you are asking for, a Roslyn based REPL running outside VisualStudio.

You can download it from PoC - Roslyn C# ScriptEngine Execute v1.0.exe which is a stand-alone exe containing all Roslyn assemblies as embedded resources. See also Video: Using O2's Roslyn-based C# REPL Script environment

Note that I have developed a more powerful C# REPL for the O2 Platform, which you can see and download from C# REPL Script Environment

On the topic of Roslyn, here are a number of other stand-alone tools that I created:

Note that all these tools and the O2 Platform are released under an Open Source license, so please fell free to expand and make them better :)

查看更多
啃猪蹄的小仙女
7楼-- · 2019-03-09 22:56

Anders Hejlsberg builds a C# REPL loop in this video, 65 minutes in:

http://channel9.msdn.com/Events/PDC/PDC08/TL16#time=65m00s

It's a much older version of Roslyn, but the same ideas apply (and eval! ;).

查看更多
登录 后发表回答