【问题标题】:C# Console/CLI Interpreter?C# 控制台/CLI 解释器?
【发布时间】:2010-09-25 03:13:23
【问题描述】:

我想知道是否有类似 Visual Studios“即时窗口”的独立版本?有时我只是想测试一些简单的东西,比如“DateTime.Parse(“blah”)”,看看它是否有效。但是每次我必须创建一个新的控制台应用程序时,输入我的代码并测试它。

遗憾的是,即时窗口仅在我调试某些东西时才有效。 PowerShell 能做到这一点吗?只需打开一个类似于 cmd.exe 的 CLI,让我执行一些 C# 代码?

【问题讨论】:

  • 我不知道用 Reflection.Emit 写一个会很困难
  • 刚刚添加了REPL标签。
  • 不知道那个术语,但是是的,这实际上就是我要找的 :)

标签: c# .net read-eval-print-loop


【解决方案1】:

Linqpad - 我一直都这样使用它。 http://www.linqpad.net/

不要被这个名字误导 - 这只是描述了它的原始动机,而不是它的功能。

就在最近,他发布了一个具有正确语句完成功能的版本 - 这是一个收费的附加组件(核心工具是免费的),但我认为只需少量的钱,非常值得。

【讨论】:

  • LINQPad 无疑是我做过的最好的投资,比 R# 或其他任何东西都更有价值。
  • LINQPad 是我发现探索库或快速原型化解决方案的最佳方式。自动完成 + 内联文档 + 立即输出 = 赢。
  • 查看@Athari 的答案:“C# Interactive window and csi.exe”(+1)
【解决方案2】:

Mono 项目包含一个交互式 C# shell,这可能正是您想要的。

http://www.mono-project.com/CsharpRepl

【讨论】:

    【解决方案3】:

    C# Interactive 窗口和 csi.exe REPL 已添加到 Visual Studio 2015 Update 1

    介绍互动

    交互式窗口又回来了! C# 交互窗口在 Visual Studio 2015 更新 1 中返回,同时还有一些其他交互功能:

    • C# 交互。 C# 交互式窗口本质上是一个读取-评估-打印-循环 (REPL),它允许您使用 .NET 技术进行游戏和探索,同时利用 IntelliSense、语法着色等编辑器功能。了解有关如何使用 C# 的更多信息在第 9 频道或通过阅读我们的初学者演练进行互动。

    • CSI。如果您不想打开 Visual Studio 来玩弄 C# 或运行脚本文件,可以从开发人员命令提示符访问交互式引擎。键入 csi /path/myScript.csx 以执行脚本文件,或简单地键入 csi 以放入命令行 REPL。

    • 脚本 API。脚本 API 使您能够在主机创建的执行环境中执行 C# 代码的 sn-ps。您可以查看我们的代码示例,了解有关如何创建自己的 C# 脚本引擎的更多信息。

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

    基本上,现在你有:

    • IDE REPL — VS 中的 C# 交互窗口
    • 脚本解释器 — 来自 Dev Cmd Prompt 的 csi foo.csx
    • 命令行 REPL — 来自 Dev Cmd Prompt 的 csi
    • 脚本 API

    【讨论】:

      【解决方案4】:

      试试scriptcs,它没有集成到 VS IDE 中,但它可以让您在脚本窗口中键入和运行 C#,而无需项目编译器等...

      【讨论】:

      • 这真是太好了。它可以很容易地用chocolatey安装,然后你只需从powershell用“scriptcs”运行它就可以进入REPL模式
      【解决方案5】:

      嗯,这不是您问题的直接答案,但您可以查看此工具:

      此外,如果您想查看生成的 IL 或类似内容,有一个插入到 Reflector 的工具,称为 Snippy,基于 Jon 在他自己的答案中进一步提到的 Snippy 工具。

      所有这些都非常好用。

      【讨论】:

        【解决方案6】:

        正如您所建议的,PowerShell 可以做您想做的事。例如,要测试您的 DateTime.Parse,以下一行代码可以解决问题:

        PS C:\Documents and Settings\Dan> [System.DateTime]::Parse("Blah")
        使用“1”参数调用“Parse”的异常:“字符串未被识别为有效的日期时间。有一个未知的 从索引 0 开始的单词。” 在行:1 字符:25 + [System.DateTime]::Parse(

        PS C:\Documents and Settings\Dan> [System.DateTime]::Parse("1/2/3")

        2003 年 2 月 1 日 00:00:00

        请注意,以上使用的是当前版本的 PowerShell (v1.0)。 PowerShell 的下一个版本将允许您更直接地将 C# 与 PowerShell 脚本混合。为了激发您的食欲,请观看Doug Finke 的这个 7 分钟截屏视频“C# to PowerShell”。印象深刻!

        【讨论】:

        • +1。您在这里可能遇到的主要问题是 PowerShell 不能很好地处理泛型方法。
        【解决方案7】:

        如果您使用的是 Mono,则如下:

        CsharpRepl

        Don Box hacked something very simple up 几年前也是如此。

        【讨论】:

          【解决方案8】:

          按照 lassevk 的回答,我得到了"Snippy"。这是为 C# in Depth 开发的,UI 很垃圾,但它可以工作 - 并且还允许您编写额外的成员(方法、嵌套类等),例如

          public static void Foo()
          { 
              Console.WriteLine("Hello");
          }
          ...
          Foo();
          

          (... 用于告诉 Snippy “这里的所有内容都属于 Main”。)

          【讨论】:

            【解决方案9】:

            我们刚刚发布了 CShell 一个功能齐全的 C# REPL IDE。它支持代码完成、脚本文件、添加引用,并且是真正可扩展的。此外,我们计划很快添加 NuGet 支持,这将使编写一些代码并查看它是如何工作的变得超级快。

            http://cshell.net/

            我们喜欢 LINQPad,但它没有 REPL,代码只执行一次,除非您修改脚本并再次运行整个脚本,否则您无法对结果进行任何进一步的处理。这很好,但有时如果你想要更多的脚本感觉,那么在 REPL 中评估你的代码真的很方便。

            【讨论】:

              【解决方案10】:

              我还发现SharpDevelop 非常快速和轻量级,它是启动快速测试项目的最简单方法。

              【讨论】:

                【解决方案11】:

                您可能会发现对象测试台很有用。它不是很知名,但可以让您创建类的实例、执行静态方法等。它对于发现如何使用不熟悉的 API 或快速调试您自己的类和方法非常有用,无需为简单检查创建测试工具。

                您可以在此处找到 MSDN 文档:

                http://msdn.microsoft.com/en-us/library/c3775d98%28VS.80%29.aspx

                【讨论】:

                • 我在几天前“偶然”发现了这一点。它实际上非常有用,虽然不是我真正想要的,但仍然 +1,因为它确实是 Visual Studio 的“隐藏宝石”。
                【解决方案12】:

                如果你能等一会儿.. 看起来可能有一个 C# 相当于 Ruby 的 irb 及时用于 C# 4.0 Anders H. 演示了一个交互式控制台会话,您可以在其中键入任意 C# 代码并在他的 PDC 2008 上的“Future of C#”文章中查看结果。您甚至可以从中弹出一个 WPF 窗口,然后通过控制台界面使用它。很酷。

                【讨论】:

                  【解决方案13】:

                  使用LINQPad

                  尽管有名称,但它可以执行任何 C# 或 VB 代码,从简单的表达式到整个类。

                  另外,它可以在结果中可视化整个对象图。

                  您甚至可以添加对您自己的程序集的引用。

                  【讨论】:

                    【解决方案14】:

                    试试C# REPL Script Environment,它是O2 Platform 的一部分。这正是您所要求的。

                    它将为您提供一个完美的环境来试用所有 C# 功能和 API(从概念上讲,O2 REPL 环境类似于 LinqPAD)

                    您还应该看看 Microsoft 的 Roslyn。在 Multiple Roslyn based tools (all running Stand-Alone outside VisualStudio) 上,第一个是一个简单的 Roslyn REPL

                    【讨论】:

                      【解决方案15】:

                      如果您碰巧知道并喜欢 Python,那么IronPython 可能是一个不错的选择。它带有一个 (Python) REPL 控制台 (ipy.exe),您可以在其中导入和使用所有 .Net 类型。

                      我发现它对于测试小东西很有用,就像DateTime.Parse("Blah")

                      请注意,它实际上不能执行 C# 代码,但如果您只想访问 .Net,那么它是完美的。此外,如果您安装了IronPython Tools for VS,您可以使用单个键盘快捷键 (Alt+I) 在 VS 中启动 REPL 会话,并在需要时让它在停靠窗口中运行。

                      【讨论】:

                        【解决方案16】:

                        更新:http://avillenas.com/post/interactive-c

                        嗯,你可以试试这个。

                        1. 下载安装dotnet.github.io
                        2. 打开cmd
                        3. 键入“dotnet repl”
                        4. 输入您需要的任何内容。

                        我做了你想做的事。 Click here to see the gif

                        【讨论】:

                          【解决方案17】:

                          Roslyn 项目源包含一个名为 CSI (http://sourceroslyn.io/#csi/Csi.cs) 的 REPL。 Csi 类目前是内部的,但是对于“csi”项目(Roslyn.sln:Interactive/Hosts/csi),可以使用支持 e 的可执行控制台应用程序。 G。命令#r 加载程序集,#load 命令加载和执行脚本文件(启动 csi 并使用#help)。

                          【讨论】:

                            猜你喜欢
                            • 2010-11-14
                            • 2010-10-05
                            • 2022-01-20
                            • 1970-01-01
                            • 1970-01-01
                            • 2021-12-31
                            • 2015-12-03
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多