ZjzMisaka.RoslynScriptRunner
1.4.0
See the version list below for details.
dotnet add package ZjzMisaka.RoslynScriptRunner --version 1.4.0
NuGet\Install-Package ZjzMisaka.RoslynScriptRunner -Version 1.4.0
<PackageReference Include="ZjzMisaka.RoslynScriptRunner" Version="1.4.0" />
paket add ZjzMisaka.RoslynScriptRunner --version 1.4.0
#r "nuget: ZjzMisaka.RoslynScriptRunner, 1.4.0"
// Install ZjzMisaka.RoslynScriptRunner as a Cake Addin #addin nuget:?package=ZjzMisaka.RoslynScriptRunner&version=1.4.0 // Install ZjzMisaka.RoslynScriptRunner as a Cake Tool #tool nuget:?package=ZjzMisaka.RoslynScriptRunner&version=1.4.0
RoslynScriptRunner
<img src="https://www.nuget.org/Content/gallery/img/logo-header.svg?sanitize=true" height="30px">
RoslynScriptRunner is a versatile C#/VB.NET script execution library based on the Roslyn compiler, enabling dynamic runtime execution of C#/VB.NET code snippets without the need for pre-compilation.
Download
RoslynScriptRunner is available as Nuget Package now.
Getting started
Hello World
string codeHelloWorld = @"
using System;
class Run
{
public void Main()
{
Console.WriteLine(""Hello World"");
}
}
";
RoslynScriptRunner.ScriptRunner.Run(codeHelloWorld); // Hello World
If you want to hold an InstanceObject
string codeStatic = @"
using System;
public static class Run
{
public static int count = 1;
public static void Main()
{
Console.WriteLine(""Hello World Static: "" + count++);
}
}
";
RunOption runOptionStatic = new RunOption() { IsStatic = true };
runOptionStatic.InstanceObject = ScriptRunner.GetInstanceObject(codeStatic, runOptionStatic);
ScriptRunner.Run(runOptionStatic); // Hello World Static: 1
ScriptRunner.Run(runOptionStatic); // Hello World Static: 2
If you want to create delegate
string codeDelegateHelloWorld = @"
using System;
public class Run
{
public string DelegateHelloWorldFunc()
{
return ""Delegate Hello World"";
}
}
";
var DelegateHelloWorldFunc = RoslynScriptRunner.ScriptRunner.GenerateFunc<string>(codeDelegateHelloWorld, new RunOption() { MethodName = "DelegateHelloWorldFunc" });
Console.WriteLine(DelegateHelloWorldFunc(null)); // Delegate Hello World
If you only want to write functions and don't want to write using statement
string codeGenerateClassWithFunction = @"
public int GenerateClassWithFunctionTestFunc()
{
List<DiffRes> res = DiffTool.Diff(
new List<string>() { ""11111111"", ""2222222"", ""3333333"", ""4444444"", ""555"", ""666"", ""777"", ""888"", """", ""999"", ""99"", ""88"", ""77"" },
new List<string>() { ""11111111"", ""22222222"", ""33333333"", ""44444444"", """", ""666"", ""99"", ""88"", ""77"" });
List<GroupedDiffRes> groupedDiffRes = DiffTool.GetGroupedResult(res);
return groupedDiffRes.Count;
}
";
RunOption generateClassWithFunctionOption = new RunOption();
generateClassWithFunctionOption.ExtraDllFileList = new List<string> { "Diff.dll" };
generateClassWithFunctionOption.MethodName = "GenerateClassWithFunctionTestFunc";
string codeGeneratedClassWithFunction = ScriptRunner.GenerateClassWithFunction(codeGenerateClassWithFunction, generateClassWithFunctionOption);
Console.WriteLine(ScriptRunner.Run(codeGeneratedClassWithFunction, generateClassWithFunctionOption)); // 7
API
object Run(string code, RunOption runOption = null)
Task<object> RunAsync(string code, RunOption runOption = null)
object Run(ICollection<string> codeList, RunOption runOption = null)
Task<object> RunAsync(ICollection<string> codeList, RunOption runOption = null)
object Run(RunOption runOption)
Task<object> RunAsync(RunOption runOption)
Func<object[], object> GenerateFunc(string code, RunOption runOption = null)
Func<object[], TResult> GenerateFunc<TResult>(string code, RunOption runOption = null)
string GenerateClassWithFunction(string code, RunOption runOption = null)
string GenerateClassWithFunction(string code, ICollection<string> extraDllNamespaces, RunOption runOption = null)
ICollection<string> GetExtraDllNamespaces(RunOption runOption = null)
InstanceObject GetInstanceObject(string code, RunOption runOption = null)
InstanceObject GetInstanceObject(ICollection<string> codeList, RunOption runOption = null)
Options
RunOption
object[] paramList;
ICollection<string> extraDllFolderList;
ICollection<string> extraDllFileList;
string methodName;
string className;
InstanceObject instanceObject;
ScriptLanguage scriptLanguage;
bool nonPublic;
bool isStatic;
bool addDefaultUsingWhenGeneratingClass;
bool addExtraUsingWhenGeneratingClass;
ScriptLanguage
- CSharp
- VisualBasic
Useage
RoslynScriptRunner.RunOption runOption = new RoslynScriptRunner.RunOption(...);
RoslynScriptRunner.ScriptRunner.Run(code, runOption);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Microsoft.CodeAnalysis.CSharp (>= 4.4.0)
- Microsoft.CodeAnalysis.VisualBasic (>= 4.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
1.5.4 | 258 | 8/7/2023 | |
1.5.3 | 187 | 7/18/2023 | |
1.5.1 | 183 | 7/17/2023 | |
1.5.0 | 180 | 7/17/2023 | |
1.4.2 | 176 | 6/2/2023 | |
1.4.1 | 181 | 6/2/2023 | |
1.4.0 | 159 | 6/2/2023 | |
1.3.0 | 172 | 5/30/2023 | |
1.2.3 | 174 | 5/26/2023 | |
1.2.2 | 178 | 5/25/2023 | |
1.2.1 | 176 | 5/25/2023 | |
1.2.0 | 163 | 5/24/2023 | |
1.1.1 | 162 | 5/24/2023 | |
1.1.0 | 176 | 5/24/2023 | |
1.0.5 | 154 | 5/23/2023 | |
1.0.4 | 172 | 5/18/2023 | |
1.0.3 | 166 | 5/18/2023 | |
1.0.2 | 166 | 5/18/2023 | |
1.0.1 | 171 | 5/18/2023 | |
1.0.0 | 158 | 5/17/2023 |