I tried to write a .net core console program to use the C# scripting API to run a linq statement, but I keep getting error saying
'System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.IO.FileLoadException: Native image cannot be loaded multiple times.
Here is my program:
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
try
{
var scriptOptions = ScriptOptions.Default;
//Add reference to mscorlib
var mscorlib = typeof(System.Object).GetTypeInfo().Assembly;
var systemCore = typeof(System.Linq.Enumerable).GetTypeInfo().Assembly;
scriptOptions = scriptOptions.AddReferences(mscorlib, systemCore);
//Add namespaces
scriptOptions = scriptOptions.AddImports("System");
scriptOptions = scriptOptions.AddImports("System.Linq");
scriptOptions = scriptOptions.AddImports("System.Collections.Generic");
var state = CSharpScript.RunAsync(@"var x = new List<int>(){1,2,3,4,5};", scriptOptions).Result;
state = state.ContinueWithAsync("var y = x.Take(3).ToList();").Result;
var y = state.Variables[1];
var yList = (List<int>)y.Value;
foreach(var val in yList)
{
Console.Write(val + " "); // Prints 1 2 3
}
}
catch (CompilationErrorException e)
{
Console.WriteLine(string.Join(Environment.NewLine, e.Diagnostics));
}
catch (Exception e)
{
Console.WriteLine(string.Join(Environment.NewLine, e));
}
}
}
}
Here is my project.json:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.CodeAnalysis.CSharp.Scripting": "2.0.0-rc2"
},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": ["dnxcore50", "net452"]
}
}
}