How to set C# version for csi.exe

2.1k Views Asked by At

In C# interactive (as part of Visual Studio 2019 or standalone) I'd like to code something like this using C#:

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

This gives the following message:

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

Is there a way to modify e.g., csi.exe.config or other means in order to support C# 8.0 ?

2

There are 2 best solutions below

2
On BEST ANSWER

Update 2020-11-25

It is working in Visual Studio 16.8.2.

Just enter #reset core to switch to .NET Core.


Update 2020-07-14

According to https://github.com/dotnet/roslyn/pull/45046, it will probably work in the next version of 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.


Original answer

It looks like there is no way currently. Because C# Interactive is not able to run Core 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

0
On

Looks like dotnet interactive provides similar functionality through Jupyter Notebooks. https://devblogs.microsoft.com/dotnet/net-interactive-preview-3-vs-code-insiders-and-polyglot-notebooks/ That saved my day :-)