【问题标题】:Make C# source run as a script?让 C# 源代码作为脚本运行?
【发布时间】:2011-02-24 23:50:55
【问题描述】:

我正在编写一些脚本,并且我发现有时更多的功能会很好。就像能够继续尝试以 1 秒的延迟删除文件并使其具有便携性。我今天花了一些时间将 bat 脚本翻译成 bash。我知道我可以使用 php 或 python,但我非常喜欢静态/编译时间检查。

有没有办法将 C# 代码作为脚本运行?只要我可以快速编辑源代码(就像在记事本中一样)并简单地运行它,我就会很高兴。

我希望我不必创建自定义 ext 并编写应用程序来动态编译和执行脚本(我知道在某处有编译 .js 的源...)。有谁知道解决办法吗?

【问题讨论】:

  • 如果您想访问 .NET 库(以及一堆命令行开关),可以使用 PowerShell。 F# 还具有交互模式,可让您从控制台访问 .NET 库。与即时编译 C# 相比,其中任何一个似乎都是更直接的解决方案。
  • 我不确定我是否听懂了你的问题。您希望能够“快速编辑源代码并运行它”,但您“更喜欢静态/编译时检查”。你想要一种解释的语言还是编译的语言?
  • 您可以使用 csscript 或 linqpad 作为回答。我对每个复杂的批次都使用 csscript

标签: c# .net scripting


【解决方案1】:

嗯,有 CS 脚本。 http://csscript.net/

虽然我自己没怎么用过。

【讨论】:

    【解决方案2】:
    > copy con cs.bat
    csc -o OUTPUT.exe %1
    OUTPUT.exe
    del OUTPUT.exe
    ^Z
    > cs somefile.cs
    

    这是一个更好的批处理文件版本:

    @echo off
    echo using System; class P { static void Main() { > foo.cs
    type %1 >> foo.cs
    echo }} >> foo.cs
    csc /nologo /out:foo.exe foo.cs
    del foo.cs
    foo.exe
    del foo.exe
    

    所以你有一个名为 foo.txt 的文件:

    Console.WriteLine("Hello world");
    

    像这样调用它:

    cs.bat foo.txt
    

    【讨论】:

    • 如果我厌倦了编写命名空间或者我想拥有内置函数,我可能会这样做。
    • @leppie 谢谢你,我用你的代码作为我自己的一个方便的批处理文件的基础:gist.github.com/3018417
    【解决方案3】:

    Mono 有 CsharpRepl,它是 C# 的交互式 shell

    【讨论】:

      【解决方案4】:

      每当我需要执行一个小 sn-p 来在 C# 中执行某些操作时,我都会启动 LinqPad

      对于简单的小脚本来说,它可能包含的内容有点多,但它胜过每次都制作一个新的控制台项目。

      【讨论】:

        【解决方案5】:

        有一个由mono项目开发者名字CsharpRepl开发的shell。我从未尝试过,但它似乎很有趣。

        【讨论】:

          猜你喜欢
          • 2018-12-17
          • 2017-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-20
          相关资源
          最近更新 更多