Компилирование в памяти
От: MAPCUAHUH  
Дата: 06.03.06 10:16
Оценка:
Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память?
У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?
Re: Компилирование в памяти
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.03.06 11:10
Оценка: 5 (1)
Здравствуйте, MAPCUAHUH, Вы писали:

MAP>Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память?

MAP>У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?

Реально, никак. Компилятор шарпа — это ехе-шник и он умеет работать только с файлами на диске. Есть API позволющий компилировать в памяти, но реально он всего лишь за кулисами создает временные файлы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Компилирование в памяти
От: Sheridan Россия  
Дата: 06.03.06 13:15
Оценка:
Здравствуйте, MAPCUAHUH, Вы писали:

MAP>Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память?

MAP>У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?

Зачем, если не секрет?

[RSDN@Home][1.2.0][alpha][645]
[Вину предков искупают потомки. [Курций]]
Matrix has you...
Re[2]: Компилирование в памяти
От: MAPCUAHUH  
Дата: 06.03.06 17:14
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, MAPCUAHUH, Вы писали:


MAP>>Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в память?

MAP>>У меня получилось откомпилировать dll, загрузить и удалить фаил, как откомпилировать в массив байт сразу?

S>Зачем, если не секрет?


На входе с формы получаем кусок кода и надо его выполнить
Или есть другие способы вычислить мат. выражение? (Парсить его лениво)
Re: Компилирование в памяти
От: Ромашка Украина  
Дата: 06.03.06 18:13
Оценка: 3 (1)
Здравствуйте 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


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[2]: Компилирование в памяти
От: MAPCUAHUH  
Дата: 07.03.06 05:34
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Здравствуйте MAPCUAHUH, Вы писали :

>> Здраствуйте, есть кусок кода на С#, Как его скомпилировать и загрузить в
>> память?
>> У меня получилось откомпилировать dll, загрузить и удалить фаил, как
>> откомпилировать в массив байт сразу?
Р>???
Р>.GenerateInMemory = true;

Спасибо большое то что нужно, про свойство знал, но не знал как сборку подом достать.
Re[2]: Компилирование в памяти
От: Аноним  
Дата: 07.03.06 01:04
Оценка:
MAPCUAHUH конечно есть уже готовые парсеры и с исходниками, что за гон ты придумываешь с генерацией http://www.aisto.com/roeder/dotnet/Download.aspx?File=Mapack

------
Форум профессионалов


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.