using System; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting;
publicclassProgram { publicstaticasync Task Main(string[] args) { string code = @" int Multiply(int x, int y) => x * y; Multiply(a, b) "; var globals = new Globals { a = 3, b = 5 }; var result = await CSharpScript.EvaluateAsync<int>(code, ScriptOptions.Default, globals); Console.WriteLine(result); // 输出 15 }
using System; using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting;
publicclassProgram { publicstaticasync Task Main(string[] args) { string code = "a + b"; var globals = new Globals { a = 3, b = 5 }; var scriptOptions = ScriptOptions.Default .WithEmitDebugInformation(true) // 生成调试信息 .WithFilePath("script.csx") // 指定脚本文件路径 .WithFileEncoding(System.Text.Encoding.UTF8) // 指定文件编码 .WithLanguageVersion(LanguageVersion.CSharp8); // 使用 C# 8.0 版本 var result = await CSharpScript.EvaluateAsync<int>(code, scriptOptions, globals); Console.WriteLine(result); // 输出 8 }