【问题标题】:How to set C# version for csi.exe如何为 csi.exe 设置 C# 版本
【发布时间】:2020-03-31 08:21:01
【问题描述】:

在 C# 交互式(作为 Visual Studio 2019 的一部分或独立)中,我想使用 C# 编写类似这样的代码:

var s = "abcdef";
var s1 = s[2..4];

这会给出以下消息:

(1,12):错误 CS0518:未定义预定义类型“System.Range”或 进口的

有没有办法修改例如 csi.exe.config 或其他方式以支持 C# 8.0 ?

【问题讨论】:

    标签: c# c#-8.0 c#-interactive csi


    【解决方案1】:

    2020 年 11 月 25 日更新

    它在 Visual Studio 16.8.2 中运行。

    只需输入#reset core 即可切换到.NET Core。


    2020 年 7 月 14 日更新

    根据https://github.com/dotnet/roslyn/pull/45046,它可能会在下一版本的Visual Studio 2019 中工作。

    #reset 命令添加一个新选项,允许用户将交互式窗口主机切换到 .NET Core:

    • #reset 32 - 切换到 .NET Framework 32 位进程
    • #reset 64 - 切换到 .NET Framework 64 位进程
    • #reset core - 切换到 .NET Core 64 位进程

    暂时保留 .NET Framework 64 位的默认设置。


    原答案

    目前看来没有办法。因为 C# Interactive 无法运行 Core CLR。​​

    交互式窗口此时仅支持 .NET Framework。 因此,功能仅限于 C# 7.3 及更低版本。太启用 C# 8 我们 需要首先启用在 Core CLR 上运行(参见 #4788)。

    https://github.com/dotnet/roslyn/issues/40341

    【讨论】:

    • #reset 选项似乎仅在 Visual Studio 工具中可用,当您从命令行执行 csi.exe 时不可用
    【解决方案2】:

    看起来 dotnet interactive 通过 Jupyter Notebooks 提供了类似的功能。 https://devblogs.microsoft.com/dotnet/net-interactive-preview-3-vs-code-insiders-and-polyglot-notebooks/ 这拯救了我的一天:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2022-07-20
      • 2016-01-24
      相关资源
      最近更新 更多