Ecng.Compilation
1.0.280
See the version list below for details.
dotnet add package Ecng.Compilation --version 1.0.280
NuGet\Install-Package Ecng.Compilation -Version 1.0.280
<PackageReference Include="Ecng.Compilation" Version="1.0.280" />
<PackageVersion Include="Ecng.Compilation" Version="1.0.280" />
<PackageReference Include="Ecng.Compilation" />
paket add Ecng.Compilation --version 1.0.280
#r "nuget: Ecng.Compilation, 1.0.280"
#:package Ecng.Compilation@1.0.280
#addin nuget:?package=Ecng.Compilation&version=1.0.280
#tool nuget:?package=Ecng.Compilation&version=1.0.280
Ecng.Compilation
Dynamic code compilation infrastructure for C#, F#, and Python. Compile code at runtime, manage references, and cache assemblies.
Overview
This library provides a unified interface for runtime code compilation supporting multiple languages through specialized providers.
Core Types
ICompiler Interface
The main abstraction for compilers.
public interface ICompiler
{
string Extension { get; } // e.g., ".cs", ".fs", ".py"
bool IsAssemblyPersistable { get; } // Can save compiled assembly
bool IsTabsSupported { get; } // Language supports tabs
bool IsCaseSensitive { get; } // Language is case-sensitive
bool IsReferencesSupported { get; } // Supports external references
ICompilerContext CreateContext();
Task<CompilationResult> Compile(
string name,
IEnumerable<string> sources,
IEnumerable<(string name, byte[] body)> refs,
CancellationToken ct = default);
Task<CompilationError[]> Analyse(
object analyzer,
IEnumerable<object> analyzerSettings,
string name,
IEnumerable<string> sources,
IEnumerable<(string name, byte[] body)> refs,
CancellationToken ct = default);
}
CompilationResult
Result of a compilation operation.
var result = await compiler.Compile("MyCode", sources, references);
if (result.HasErrors)
{
foreach (var error in result.Errors)
{
Console.WriteLine($"{error.Type}: {error.Message}");
Console.WriteLine($" Line {error.Line}, Column {error.Column}");
}
}
else
{
// Get compiled assembly
Assembly assembly = result.Assembly;
// Or get as bytes for storage
byte[] assemblyBytes = result.AssemblyBytes;
}
CompilationError
Represents a compilation error or warning.
public class CompilationError
{
public CompilationErrorTypes Type { get; } // Error, Warning, Info
public string Id { get; } // e.g., "CS0001"
public string Message { get; }
public int Line { get; }
public int Column { get; }
}
Reference Types
AssemblyReference
Reference to a .NET assembly.
// From file path
var fileRef = new AssemblyReference("path/to/assembly.dll");
// From loaded assembly
var loadedRef = new AssemblyReference(typeof(SomeClass).Assembly);
NuGetReference
Reference to a NuGet package.
var nugetRef = new NuGetReference
{
PackageId = "Newtonsoft.Json",
Version = "13.0.1"
};
Compiler Provider
Manages available compilers and provides access to them.
// Get registered compilers
IEnumerable<ICompiler> compilers = CompilerProvider.Compilers;
// Get compiler by extension
ICompiler csCompiler = CompilerProvider.GetCompiler(".cs");
ICompiler fsCompiler = CompilerProvider.GetCompiler(".fs");
ICompiler pyCompiler = CompilerProvider.GetCompiler(".py");
Compiler Implementations
| Package | Language | Extension |
|---|---|---|
| Ecng.Compilation.Roslyn | C# | .cs |
| Ecng.Compilation.FSharp | F# | .fs |
| Ecng.Compilation.Python | Python | .py |
Expression Formulas
Parse and evaluate mathematical expressions at runtime.
using Ecng.Compilation.Expressions;
// Parse expression
var formula = ExpressionHelper.Parse("(a + b) * 2");
// Get variables used
IEnumerable<string> vars = formula.Variables; // ["a", "b"]
// Evaluate with values
var values = new Dictionary<string, decimal>
{
["a"] = 10,
["b"] = 5
};
decimal result = formula.Calculate(values); // 30
Supported Operations
- Arithmetic:
+,-,*,/,% - Comparison:
<,>,<=,>=,==,!= - Logical:
&&,||,! - Functions:
abs,sqrt,min,max,pow, etc.
Assembly Load Context
Manage assembly loading for isolation.
using Ecng.Compilation;
// Track loaded assemblies
var tracker = new AssemblyLoadContextTracker();
// Load assembly in isolated context
var context = tracker.CreateContext("MyPlugin");
Assembly asm = context.LoadFromAssemblyPath("plugin.dll");
// Unload when done
tracker.Unload("MyPlugin");
Compiler Cache
Cache compiled assemblies for reuse.
public interface ICompilerCache
{
bool TryGet(string key, out byte[] assembly);
void Set(string key, byte[] assembly);
void Remove(string key);
void Clear();
}
Usage Examples
Compile C# Code
var compiler = CompilerProvider.GetCompiler(".cs");
string code = @"
public class Calculator
{
public int Add(int a, int b) => a + b;
}";
var result = await compiler.Compile(
name: "Calculator",
sources: new[] { code },
refs: Array.Empty<(string, byte[])>());
if (!result.HasErrors)
{
var type = result.Assembly.GetType("Calculator");
var instance = Activator.CreateInstance(type);
var method = type.GetMethod("Add");
int sum = (int)method.Invoke(instance, new object[] { 2, 3 });
Console.WriteLine(sum); // 5
}
Compile with References
var refs = new List<(string, byte[])>();
// Add reference
var asmBytes = File.ReadAllBytes("MyLibrary.dll");
refs.Add(("MyLibrary.dll", asmBytes));
var result = await compiler.Compile("MyCode", sources, refs);
NuGet
Install-Package Ecng.Compilation
Install-Package Ecng.Compilation.Roslyn # For C# support
Install-Package Ecng.Compilation.FSharp # For F# support
Install-Package Ecng.Compilation.Python # For Python support
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Ecng.ComponentModel (>= 1.0.415)
-
net6.0
- Ecng.ComponentModel (>= 1.0.415)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on Ecng.Compilation:
| Package | Downloads |
|---|---|
|
StockSharp.Algo
Trading algorithms. More info on web site https://stocksharp.com/store/ |
|
|
Ecng.Compilation.Roslyn
Ecng system framework |
|
|
Ecng.Roslyn
Ecng system framework |
|
|
Ecng.Compilation.Python
Ecng system framework |
|
|
Ecng.Compilation.FSharp
Ecng system framework |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Ecng.Compilation:
| Repository | Stars |
|---|---|
|
StockSharp/StockSharp
Algorithmic trading and quantitative trading open source platform to develop trading robots (stock markets, forex, crypto, bitcoins, and options).
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.284 | 0 | 1/22/2026 |
| 1.0.283 | 78 | 1/21/2026 |
| 1.0.282 | 202 | 1/19/2026 |
| 1.0.281 | 143 | 1/19/2026 |
| 1.0.280 | 140 | 1/18/2026 |
| 1.0.279 | 136 | 1/18/2026 |
| 1.0.278 | 157 | 1/16/2026 |
| 1.0.277 | 255 | 1/14/2026 |
| 1.0.276 | 187 | 1/13/2026 |
| 1.0.275 | 188 | 1/13/2026 |
| 1.0.274 | 191 | 1/12/2026 |
| 1.0.273 | 280 | 1/9/2026 |
| 1.0.272 | 228 | 1/9/2026 |
| 1.0.271 | 184 | 1/8/2026 |
| 1.0.270 | 189 | 1/8/2026 |
| 1.0.269 | 201 | 1/7/2026 |
| 1.0.268 | 214 | 1/6/2026 |
| 1.0.267 | 142 | 1/6/2026 |
| 1.0.266 | 289 | 1/4/2026 |
| 1.0.265 | 235 | 1/1/2026 |
| 1.0.264 | 175 | 12/31/2025 |
| 1.0.263 | 189 | 12/30/2025 |
| 1.0.262 | 173 | 12/30/2025 |
| 1.0.261 | 169 | 12/29/2025 |
| 1.0.260 | 176 | 12/29/2025 |
| 1.0.259 | 181 | 12/26/2025 |
| 1.0.258 | 165 | 12/26/2025 |
| 1.0.257 | 172 | 12/26/2025 |
| 1.0.256 | 183 | 12/26/2025 |
| 1.0.255 | 261 | 12/25/2025 |
| 1.0.254 | 259 | 12/25/2025 |
| 1.0.253 | 261 | 12/24/2025 |
| 1.0.252 | 265 | 12/22/2025 |
| 1.0.251 | 243 | 12/21/2025 |
| 1.0.250 | 325 | 12/19/2025 |
| 1.0.249 | 321 | 12/19/2025 |
| 1.0.248 | 422 | 12/17/2025 |
| 1.0.247 | 426 | 12/16/2025 |
| 1.0.246 | 346 | 12/15/2025 |
| 1.0.245 | 333 | 12/15/2025 |
| 1.0.244 | 305 | 12/14/2025 |
| 1.0.243 | 247 | 12/14/2025 |
| 1.0.242 | 266 | 12/13/2025 |
| 1.0.241 | 256 | 12/13/2025 |
| 1.0.240 | 248 | 12/12/2025 |
| 1.0.239 | 211 | 12/12/2025 |
| 1.0.238 | 219 | 12/12/2025 |
| 1.0.237 | 212 | 12/12/2025 |
| 1.0.236 | 211 | 12/12/2025 |
| 1.0.235 | 216 | 12/12/2025 |
| 1.0.234 | 211 | 12/12/2025 |
| 1.0.233 | 901 | 12/2/2025 |
| 1.0.232 | 781 | 12/2/2025 |
| 1.0.231 | 773 | 12/2/2025 |
| 1.0.230 | 399 | 11/30/2025 |
| 1.0.229 | 244 | 11/29/2025 |
| 1.0.228 | 242 | 11/28/2025 |
| 1.0.227 | 247 | 11/28/2025 |
| 1.0.226 | 313 | 11/27/2025 |
| 1.0.225 | 402 | 11/24/2025 |
| 1.0.224 | 320 | 11/24/2025 |
| 1.0.223 | 332 | 11/23/2025 |
| 1.0.222 | 304 | 11/23/2025 |
| 1.0.221 | 379 | 11/22/2025 |
| 1.0.220 | 613 | 11/20/2025 |
| 1.0.219 | 564 | 11/18/2025 |
| 1.0.218 | 522 | 11/18/2025 |
| 1.0.217 | 516 | 11/13/2025 |
| 1.0.216 | 411 | 11/10/2025 |
| 1.0.215 | 1,290 | 11/1/2025 |
| 1.0.214 | 391 | 10/28/2025 |
| 1.0.213 | 396 | 10/27/2025 |
| 1.0.212 | 344 | 10/27/2025 |
| 1.0.211 | 276 | 10/25/2025 |
| 1.0.210 | 320 | 10/24/2025 |
| 1.0.209 | 520 | 10/20/2025 |
| 1.0.208 | 540 | 10/12/2025 |
| 1.0.207 | 311 | 10/11/2025 |
| 1.0.206 | 603 | 10/7/2025 |
| 1.0.205 | 417 | 10/6/2025 |
| 1.0.204 | 637 | 10/3/2025 |
| 1.0.203 | 443 | 10/1/2025 |
| 1.0.202 | 350 | 10/1/2025 |
| 1.0.201 | 371 | 9/30/2025 |
| 1.0.200 | 398 | 9/28/2025 |
| 1.0.199 | 434 | 9/25/2025 |
| 1.0.198 | 3,063 | 9/5/2025 |
| 1.0.197 | 448 | 9/2/2025 |
| 1.0.196 | 1,170 | 8/30/2025 |
| 1.0.195 | 428 | 8/30/2025 |
| 1.0.194 | 459 | 8/20/2025 |
| 1.0.193 | 354 | 8/20/2025 |
| 1.0.192 | 399 | 8/19/2025 |
| 1.0.191 | 412 | 8/15/2025 |
| 1.0.190 | 2,547 | 7/16/2025 |
| 1.0.189 | 828 | 7/14/2025 |
| 1.0.188 | 435 | 7/13/2025 |
| 1.0.187 | 369 | 7/13/2025 |
| 1.0.186 | 357 | 7/12/2025 |
| 1.0.185 | 692 | 7/8/2025 |
| 1.0.184 | 666 | 7/4/2025 |
| 1.0.183 | 409 | 7/2/2025 |
| 1.0.182 | 819 | 6/24/2025 |
| 1.0.181 | 1,441 | 6/16/2025 |
| 1.0.180 | 561 | 6/9/2025 |
| 1.0.179 | 442 | 6/8/2025 |
| 1.0.178 | 832 | 5/25/2025 |
| 1.0.177 | 406 | 5/21/2025 |
| 1.0.176 | 387 | 5/21/2025 |
| 1.0.175 | 351 | 5/17/2025 |
| 1.0.174 | 347 | 5/17/2025 |
| 1.0.173 | 356 | 5/17/2025 |
| 1.0.172 | 887 | 5/12/2025 |
| 1.0.171 | 480 | 5/12/2025 |
| 1.0.170 | 437 | 5/12/2025 |
| 1.0.169 | 382 | 5/11/2025 |
| 1.0.168 | 371 | 5/11/2025 |
| 1.0.167 | 343 | 5/10/2025 |
| 1.0.166 | 333 | 5/10/2025 |
| 1.0.165 | 355 | 5/3/2025 |
| 1.0.164 | 512 | 4/17/2025 |
| 1.0.163 | 475 | 4/15/2025 |
| 1.0.162 | 399 | 4/12/2025 |
| 1.0.161 | 432 | 4/9/2025 |
| 1.0.160 | 1,652 | 3/22/2025 |
| 1.0.159 | 414 | 3/20/2025 |
| 1.0.158 | 390 | 3/20/2025 |
| 1.0.157 | 396 | 3/19/2025 |
| 1.0.156 | 1,355 | 2/26/2025 |
| 1.0.155 | 373 | 2/26/2025 |
| 1.0.154 | 1,588 | 2/8/2025 |
| 1.0.153 | 365 | 2/8/2025 |
| 1.0.152 | 361 | 2/8/2025 |
| 1.0.151 | 376 | 2/6/2025 |
| 1.0.150 | 372 | 2/6/2025 |
| 1.0.149 | 380 | 2/6/2025 |
| 1.0.148 | 366 | 2/6/2025 |
| 1.0.147 | 358 | 2/6/2025 |
| 1.0.146 | 396 | 2/5/2025 |
| 1.0.145 | 391 | 2/5/2025 |
| 1.0.144 | 388 | 2/5/2025 |
| 1.0.143 | 415 | 2/3/2025 |
| 1.0.142 | 371 | 2/2/2025 |
| 1.0.141 | 382 | 2/1/2025 |
| 1.0.140 | 393 | 1/31/2025 |
| 1.0.139 | 385 | 1/30/2025 |
| 1.0.138 | 400 | 1/26/2025 |
| 1.0.137 | 486 | 1/21/2025 |
| 1.0.136 | 367 | 1/21/2025 |
| 1.0.135 | 405 | 1/20/2025 |
| 1.0.134 | 364 | 1/20/2025 |
| 1.0.133 | 460 | 1/19/2025 |
| 1.0.132 | 407 | 1/19/2025 |
| 1.0.131 | 514 | 1/17/2025 |
| 1.0.130 | 390 | 1/17/2025 |
| 1.0.129 | 441 | 1/14/2025 |
| 1.0.128 | 669 | 1/12/2025 |
| 1.0.127 | 455 | 1/12/2025 |
| 1.0.126 | 459 | 1/12/2025 |
| 1.0.125 | 475 | 1/12/2025 |
| 1.0.124 | 453 | 1/12/2025 |
| 1.0.123 | 428 | 1/12/2025 |
| 1.0.122 | 435 | 1/12/2025 |
| 1.0.121 | 451 | 1/11/2025 |
| 1.0.120 | 482 | 1/10/2025 |
| 1.0.119 | 490 | 1/10/2025 |
| 1.0.118 | 484 | 1/9/2025 |
| 1.0.117 | 417 | 1/9/2025 |
| 1.0.116 | 391 | 1/9/2025 |
| 1.0.115 | 416 | 1/9/2025 |
| 1.0.114 | 1,621 | 12/27/2024 |
| 1.0.113 | 454 | 12/19/2024 |
| 1.0.112 | 478 | 11/20/2024 |
| 1.0.111 | 1,300 | 11/18/2024 |
| 1.0.110 | 697 | 11/7/2024 |
| 1.0.109 | 340 | 11/7/2024 |
| 1.0.108 | 370 | 11/7/2024 |
| 1.0.107 | 342 | 11/7/2024 |
| 1.0.106 | 343 | 11/7/2024 |
| 1.0.105 | 341 | 11/7/2024 |
| 1.0.104 | 344 | 11/7/2024 |
| 1.0.103 | 366 | 11/6/2024 |
| 1.0.102 | 379 | 10/31/2024 |
| 1.0.101 | 462 | 10/19/2024 |
| 1.0.100 | 1,059 | 10/12/2024 |
| 1.0.99 | 702 | 10/9/2024 |
| 1.0.98 | 627 | 10/5/2024 |
| 1.0.97 | 1,334 | 9/18/2024 |
| 1.0.96 | 393 | 9/17/2024 |
| 1.0.95 | 1,071 | 9/3/2024 |
| 1.0.94 | 378 | 9/1/2024 |
| 1.0.93 | 1,552 | 8/8/2024 |
| 1.0.92 | 2,602 | 6/12/2024 |
| 1.0.91 | 838 | 5/28/2024 |
| 1.0.90 | 1,470 | 5/4/2024 |
| 1.0.89 | 1,063 | 4/23/2024 |
| 1.0.88 | 374 | 4/21/2024 |
| 1.0.87 | 432 | 4/14/2024 |
| 1.0.86 | 1,247 | 3/28/2024 |
| 1.0.85 | 441 | 3/17/2024 |
| 1.0.84 | 1,438 | 2/23/2024 |
| 1.0.83 | 416 | 2/23/2024 |
| 1.0.82 | 1,162 | 2/18/2024 |
| 1.0.81 | 355 | 2/18/2024 |
| 1.0.80 | 363 | 2/16/2024 |
| 1.0.79 | 1,001 | 2/13/2024 |
| 1.0.78 | 833 | 2/8/2024 |
| 1.0.77 | 1,115 | 2/5/2024 |
| 1.0.76 | 376 | 2/4/2024 |
| 1.0.75 | 1,118 | 1/23/2024 |
| 1.0.74 | 363 | 1/23/2024 |
| 1.0.73 | 1,073 | 1/12/2024 |
| 1.0.72 | 1,192 | 1/2/2024 |
| 1.0.71 | 420 | 12/29/2023 |
| 1.0.70 | 1,391 | 12/15/2023 |
| 1.0.69 | 482 | 12/15/2023 |
| 1.0.68 | 447 | 12/13/2023 |
| 1.0.67 | 469 | 12/13/2023 |
| 1.0.66 | 2,419 | 11/12/2023 |
| 1.0.65 | 467 | 11/10/2023 |
| 1.0.64 | 447 | 11/10/2023 |
| 1.0.63 | 445 | 11/9/2023 |
| 1.0.62 | 456 | 11/3/2023 |
| 1.0.61 | 464 | 11/1/2023 |
| 1.0.60 | 475 | 11/1/2023 |
| 1.0.59 | 4,173 | 9/8/2023 |
| 1.0.58 | 422 | 9/8/2023 |
| 1.0.57 | 432 | 9/8/2023 |
| 1.0.56 | 497 | 9/8/2023 |
| 1.0.55 | 457 | 9/8/2023 |
| 1.0.54 | 452 | 9/7/2023 |
| 1.0.53 | 559 | 9/3/2023 |
| 1.0.52 | 609 | 8/21/2023 |
| 1.0.51 | 594 | 8/15/2023 |
| 1.0.50 | 528 | 8/14/2023 |
| 1.0.49 | 511 | 8/14/2023 |
| 1.0.48 | 527 | 8/10/2023 |
| 1.0.47 | 3,874 | 7/1/2023 |
| 1.0.46 | 539 | 6/29/2023 |
| 1.0.45 | 2,120 | 5/27/2023 |
| 1.0.44 | 598 | 5/21/2023 |
| 1.0.43 | 624 | 5/19/2023 |
| 1.0.42 | 2,439 | 5/8/2023 |
| 1.0.41 | 647 | 5/1/2023 |
| 1.0.40 | 630 | 4/22/2023 |
| 1.0.39 | 629 | 4/21/2023 |
| 1.0.38 | 4,307 | 4/3/2023 |
| 1.0.37 | 748 | 3/27/2023 |
| 1.0.36 | 806 | 3/21/2023 |
| 1.0.35 | 782 | 3/13/2023 |
| 1.0.34 | 662 | 3/12/2023 |
| 1.0.33 | 707 | 3/11/2023 |
| 1.0.32 | 2,237 | 3/6/2023 |
| 1.0.31 | 782 | 2/26/2023 |
| 1.0.30 | 2,580 | 2/21/2023 |
| 1.0.29 | 775 | 2/20/2023 |
| 1.0.28 | 801 | 2/15/2023 |
| 1.0.27 | 809 | 2/14/2023 |
| 1.0.26 | 3,335 | 2/9/2023 |
| 1.0.25 | 2,432 | 2/7/2023 |
| 1.0.24 | 843 | 2/4/2023 |
| 1.0.23 | 2,582 | 2/2/2023 |
| 1.0.22 | 2,633 | 1/30/2023 |
| 1.0.21 | 888 | 1/18/2023 |
| 1.0.20 | 5,208 | 12/30/2022 |
| 1.0.19 | 897 | 12/23/2022 |
| 1.0.18 | 862 | 12/23/2022 |
| 1.0.17 | 22,965 | 12/12/2022 |
| 1.0.16 | 66,346 | 11/11/2022 |
| 1.0.15 | 2,703 | 11/11/2022 |
| 1.0.14 | 5,119 | 11/5/2022 |
| 1.0.13 | 29,192 | 11/1/2022 |
| 1.0.12 | 26,910 | 10/16/2022 |
| 1.0.11 | 58,862 | 9/8/2022 |
| 1.0.10 | 3,041 | 9/8/2022 |
| 1.0.9 | 2,986 | 9/8/2022 |
| 1.0.8 | 99,282 | 8/24/2022 |
| 1.0.7 | 17,199 | 7/26/2022 |
| 1.0.6 | 103,235 | 7/18/2022 |
| 1.0.5 | 111,284 | 4/30/2022 |
| 1.0.4 | 23,850 | 3/29/2022 |
| 1.0.3 | 462,520 | 12/29/2021 |
| 1.0.2 | 31,403 | 12/20/2021 |
| 1.0.1 | 63,362 | 12/6/2021 |
| 1.0.0 | 4,328 | 12/2/2021 |