Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память?
У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?
Здравствуйте, MAPCUAHUH, Вы писали:
MAP>Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память? MAP>У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?
Реально, никак. Компилятор шарпа — это ехе-шник и он умеет работать только с файлами на диске. Есть API позволющий компилировать в памяти, но реально он всего лишь за кулисами создает временные файлы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, MAPCUAHUH, Вы писали:
MAP>Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память? MAP>У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, MAPCUAHUH, Вы писали:
MAP>>Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память? MAP>>У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?
S>Зачем, если не секрет?
На входе с формы получаем кусок кода и надо его выполнить
Или есть другие способы вычислить мат. выражение? (Парсить его лениво)
Здравствуйте MAPCUAHUH, Вы писали : > Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в > память? > У меня получилось откомпилировать dll, загрузить и удалить фаил, как > откомпилировать в массив байт сразу?
???
.GenerateInMemory = true;
using Microsoft;
using Microsoft.CSharp;
using System.Reflection;
using System.CodeDom.Compiler;
........
protected virtual void GetAssembly()
{
CSharpCodeProvider __provider = new CSharpCodeProvider();
ICodeCompiler __compiler = __provider.CreateCompiler();
CompilerParameters __params = new CompilerParameters();
__params.GenerateExecutable = true;
__params.GenerateInMemory = true;
CompilerResults __results =
__compiler.CompileAssemblyFromFile(__params, _assembly_path);
//.CompileAssemblyFromSource(__params, string Source) ???if (_template_assembly.Errors == 0)
_template_assembly = __results.CompiledAssembly;
else
{
string __str;
foreach (CompilerError __error in __results.Errors)
__str += __error.ErrorText + "\r\n";
throw new Exception(__str);
}
}
public virtual void Invoke(object destination)
{
if (_template_assembly == null)
GetAssembly();
object[] objects = new object[1] {destination};
_template_assembly.CompiledAssembly.GetType().InvokeMember("Invoke",
BindingFlags.InvokeMethod, null, null, objects);
}
Posted via RSDN NNTP Server 2.0
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Ромашка, Вы писали:
Р>Здравствуйте MAPCUAHUH, Вы писали : >> Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в >> память? >> У меня получилось откомпилировать dll, загрузить и удалить фаил, как >> откомпилировать в массив байт сразу? Р>??? Р>.GenerateInMemory = true;
Спасибо большое то что нужно, про свойство знал, но не знал как сборку подом достать.