Динамическая компиляция (без ехе) - C#
Формулировка задачи:
Всем привет!
Я использую след. код для компиляции "кода на ходу"
Т.е я передаю код ( в переменной source ) и мне нужно его сразу выполнить без компиляции в exe
Этот код рабочий, но если я добавлю любую другую библиотеку (к примеру Diagnostics) и использую ее, выходит ошибка, почему так получается?
Т.е к примеру такой код Как же избавиться от ошибки?
(ошибка: Невозможно загрузить файл или сборку "file:///C:\Users\objaa\AppData\Local\Temp\zyd5w24i.dll" или один из зависимых от них компонентов. Не удается найти указанный файл.)
string source = "using System; public class FooClass { public string Execute() { Console.WriteLine(\"1\"); return \"output!\";}}"; using (Microsoft.CSharp.CSharpCodeProvider foo = new Microsoft.CSharp.CSharpCodeProvider()) { var res = foo.CompileAssemblyFromSource( new System.CodeDom.Compiler.CompilerParameters() { GenerateInMemory = true }, source ); var type = res.CompiledAssembly.GetType("FooClass"); var obj = Activator.CreateInstance(type); var output = type.GetMethod("Execute").Invoke(obj, new object[] { }); Console.Write(output); }
string source = "using System; using System.Diagnostics; public class FooClass { public string Execute() { Process.Start(\"explorer\"); Console.WriteLine(\"1\"); return \"output!\";}}";
Решение задачи: «Динамическая компиляция (без ехе)»
textual
Листинг программы
var parameters = new CompilerParameters(); parameters.GenerateInMemory = true; parameters.ReferencedAssemblies.Add("System.dll"); parameters.ReferencedAssemblies.Add("mscorlib.dll");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д