Expression.Compilation
0.1.2
Roslyn Scripting provide awesome compilation of any C# expression. Roslyn.Scripting has one disadwantage now: for any single script parse it creates separate assembly in current AppDomain. Now there is no ability to unload such assemblies even they are not used anymore.
ExpressionCompiler creates DynamicMethod based on your expression without loading additional assemblies in the app domain. DynamicMethod can be garbage collected as usual class when it no longer used.
See the version list below for details.
Install-Package Expression.Compilation -Version 0.1.2
dotnet add package Expression.Compilation --version 0.1.2
<PackageReference Include="Expression.Compilation" Version="0.1.2" />
paket add Expression.Compilation --version 0.1.2
#r "nuget: Expression.Compilation, 0.1.2"
Create DynamicMethod based on text expression. Supports full C# expression syntax.
Roslyn Scripting provide awesome compilation of any C# expression. Roslyn.Scripting has one disadvantage now: for any single script parse it creates separate assembly in current AppDomain. Now there is no ability to unload such assemblies even they are not used anymore.
ExpressionCompiler creates DynamicMethod based on your expression without loading additional assemblies in the app domain. DynamicMethod can be garbage collected as usual class instance when it is no longer used.
Usage:
Func<int> calculator = new ExpressionCompiler("1 + 1").Returns(typeof(int)).Compile<Func<int>>();
Console.WriteLine(calculator.Invoke()); // Prints 2
Create DynamicMethod based on text expression. Supports full C# expression syntax.
Roslyn Scripting provide awesome compilation of any C# expression. Roslyn.Scripting has one disadvantage now: for any single script parse it creates separate assembly in current AppDomain. Now there is no ability to unload such assemblies even they are not used anymore.
ExpressionCompiler creates DynamicMethod based on your expression without loading additional assemblies in the app domain. DynamicMethod can be garbage collected as usual class instance when it is no longer used.
Usage:
Func<int> calculator = new ExpressionCompiler("1 + 1").Returns(typeof(int)).Compile<Func<int>>();
Console.WriteLine(calculator.Invoke()); // Prints 2
Dependencies
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 2.7.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 2.7.0)
- Microsoft.CodeAnalysis.FxCopAnalyzers (>= 2.6.0)
- Microsoft.CodeAnalysis.Workspaces.Common (>= 2.7.0)
- Microsoft.CSharp (>= 4.4.1)
- Mono.Cecil (>= 0.10.0)
- System.Reflection.Emit (>= 4.3.0)
- System.Reflection.Emit.ILGeneration (>= 4.3.0)
- System.Reflection.Emit.Lightweight (>= 4.3.0)
Used By
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.