Skip to content

Instantly share code, notes, and snippets.

@altrive
Last active August 29, 2015 13:56
Show Gist options
  • Save altrive/9051839 to your computer and use it in GitHub Desktop.
Save altrive/9051839 to your computer and use it in GitHub Desktop.
Call C# code snipped from PowerShell using Mono.CSharp/Roslyn
Use-NuGetPackage Mono.CSharp -Verbose
#Setup Mono C# evaluater
$settings = New-Object Mono.CSharp.CompilerSettings
$printer = New-Object Mono.CSharp.ConsoleReportPrinter
$context = New-Object Mono.CSharp.CompilerContext($settings, $printer);
$evaluator = New-Object Mono.CSharp.Evaluator($context);
$evaluator.Run("using System; using System.Linq") > $null
#Define Func<int,int> return n^2
$func = $evaluator.Evaluate('new Func<int,int>(p => {return p * p;})')
#Execute func
$func.Invoke(4)
Use-NuGetPackage Roslyn -Verbose
#Setup Roslyn Script Engine
$scriptEngine = New-Object Roslyn.Scripting.CSharp.ScriptEngine($null, $null)
$scriptEngine.AddReference("System.Linq")
$scriptEngine.ImportNamespace("System")
$scriptEngine.ImportNamespace("System.Linq")
$session = $scriptEngine.CreateSession()
#Define Func<int,int> return n^2
$func = $session.Execute('new Func<int,int>(p => {return p * p;})')
#Execute func
$func.Invoke(4)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment