如何为 csi.exe 设置 C# 版本

How to set C# version for csi.exe

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

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

这会给出以下消息:

(1,12): error CS0518: Predefined type 'System.Range' is not defined or imported

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

更新2020-11-25

它正在 Visual Studio 16.8.2 中工作。

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


更新2020-07-14

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

Adds a new option to #reset command that allows the user to switch Interactive Window host to .NET Core:

  • #reset 32 - switches to .NET Framework 32-bit process
  • #reset 64 - switches to .NET Framework 64-bit process
  • #reset core - switches to .NET Core 64-bit process

Leaves the default to .NET Framework 64-bit for now.


原回答

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

The Interactive Window only supports .NET Framework at this point. Hence features are limited to C# 7.3 and lower. Too enable C# 8 we would need to first enable running on Core CLR (see #4788).

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

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