无法在 dotnet-script 中使用 switch 表达式

问题描述

Dotnet-script 不能使用 C#8.0 添加的 switch 表达式。是规范吗?

dotnet-script.exe --info 版本:1.1.0 目标框架:net5.0 .NET 核心版本:5.0.7 平台标识符:win 运行时标识符:win10-x64

代码

var i = 1;
var t = i switch{
1 => 3,_ => 5
};

返回

System.AggregateException: System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object.)
  + System.Threading.Tasks.TaskReplicator.Run<TState>(System.Threading.Tasks.TaskReplicator.ReplicatableuserAction<TState>,System.Threading.Tasks.ParallelOptions,bool)
  + System.Threading.Tasks.Parallel.ForWorker<TLocal>(int,int,Action<int>,Action<int,System.Threading.Tasks.ParallelLoopState>,Func<int,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal>,Func<TLocal>,Action<TLocal>)
  + System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionorOtherException(System.Collections.ICollection,System.Threading.CancellationToken,System.Exception)
  + System.Threading.Tasks.Parallel.ForWorker<TLocal>(int,Action<TLocal>)
  + System.Threading.Tasks.Parallel.For(int,Action<int>)
  + Roslyn.Utilities.RoslynParallel.For(int,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.Symbols.sourceNamespaceSymbol.ForceComplete(Microsoft.CodeAnalysis.sourceLocation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.Symbols.sourceModuleSymbol.ForceComplete(Microsoft.CodeAnalysis.sourceLocation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.Symbols.sourceAssemblySymbol.ForceComplete(Microsoft.CodeAnalysis.sourceLocation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetSourceDeclarationDiagnostics(Microsoft.CodeAnalysis.SyntaxTree,Nullable<Microsoft.CodeAnalysis.Text.TextSpan>,Func<IEnumerable<Microsoft.CodeAnalysis.Diagnostic>,Microsoft.CodeAnalysis.SyntaxTree,IEnumerable<Microsoft.CodeAnalysis.Diagnostic>>,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnostics(Microsoft.CodeAnalysis.CompilationStage,bool,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Predicate<Microsoft.CodeAnalysis.Symbols.ISymbolInternal>,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream,System.IO.Stream,IEnumerable<Microsoft.CodeAnalysis.ResourceDescription>,Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,IEnumerable<Microsoft.CodeAnalysis.EmbeddedText>,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Scripting.ScriptBuilder.Build<T>(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor<T>(Microsoft.CodeAnalysis.Scripting.ScriptCompiler,Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken)
  + Script<T>.GetExecutor(System.Threading.CancellationToken)
  + Script<T>.RunFromAsync(Microsoft.CodeAnalysis.Scripting.ScriptState,Func<System.Exception,bool>,System.Threading.CancellationToken)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)