0

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

dotnet-script.exe --info 版本:1.1.0 目标框架:net5.0 .NET Core 版本: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, System.Threading.Tasks.ParallelOptions, 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, int, System.Threading.Tasks.ParallelOptions, Action<int>, Action<int, System.Threading.Tasks.ParallelLoopState>, Func<int, System.Threading.Tasks.ParallelLoopState, TLocal, TLocal>, Func<TLocal>, Action<TLocal>)
  + System.Threading.Tasks.Parallel.For(int, int, System.Threading.Tasks.ParallelOptions, Action<int>)
  + Roslyn.Utilities.RoslynParallel.For(int, int, Action<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, Nullable<Microsoft.CodeAnalysis.Text.TextSpan>, 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.GetDiagnostics(Microsoft.CodeAnalysis.CompilationStage, bool, System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder, bool, bool, bool, Microsoft.CodeAnalysis.DiagnosticBag, Predicate<Microsoft.CodeAnalysis.Symbols.ISymbolInternal>, System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream, System.IO.Stream, System.IO.Stream, System.IO.Stream, System.IO.Stream, IEnumerable<Microsoft.CodeAnalysis.ResourceDescription>, Microsoft.CodeAnalysis.Emit.EmitOptions, Microsoft.CodeAnalysis.IMethodSymbol, System.IO.Stream, IEnumerable<Microsoft.CodeAnalysis.EmbeddedText>, Microsoft.CodeAnalysis.CodeGen.CompilationTestData, System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream, System.IO.Stream, System.IO.Stream, System.IO.Stream, IEnumerable<Microsoft.CodeAnalysis.ResourceDescription>, Microsoft.CodeAnalysis.Emit.EmitOptions, Microsoft.CodeAnalysis.IMethodSymbol, System.IO.Stream, IEnumerable<Microsoft.CodeAnalysis.EmbeddedText>, System.IO.Stream, System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Scripting.ScriptBuilder.Build<T>(Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis.DiagnosticBag, bool, System.Threading.CancellationToken)
  + Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor<T>(Microsoft.CodeAnalysis.Scripting.ScriptCompiler, Microsoft.CodeAnalysis.Compilation, bool, System.Threading.CancellationToken)
  + Script<T>.GetExecutor(System.Threading.CancellationToken)
  + Script<T>.RunFromAsync(Microsoft.CodeAnalysis.Scripting.ScriptState, Func<System.Exception, bool>, System.Threading.CancellationToken)
4

0 回答 0