[Mono-dev] Edit and Continue / Function body rewrite

Kornél Pál kornelpal at gmail.com
Fri Jul 7 20:33:15 EDT 2006


Cecil can read and write metadata and IL code so you can even modify 
existing metadata or IL code. If you want to compile source code to IL code 
you need a compiler. Neither System.Reflection.Emit nor Cecil provides any 
compiler so this is not a difference.

Kornél

----- Original Message ----- 
From: "David Srbecky" <dsrbecky at gmail.com>
To: "Kornél Pál" <kornelpal at gmail.com>
Cc: <mono-devel-list at lists.ximian.com>
Sent: Saturday, July 08, 2006 2:28 AM
Subject: Re: [Mono-dev] Edit and Continue / Function body rewrite


I do not see how Cecil can help me - can you please outline how could I
use it?

I know that Cecil can write new IL code and metadata to an assembly, but
that's not what I want to do - I somehow want to obtain new IL code and
metadata from a given source code of one method.

David

Kornél Pál wrote:
> Why do you want to extend System.Reflection.Emit when Cecil already can do 
> that? As far as I know Cecil can be used with .NET Framework as well so 
> you don't even need two different runtimes.
>
> BTW according to your previous messages you don't only want to change IL 
> code but you want to modify metadata and string heap as well.
>
> Kornél
>
> ----- Original Message ----- From: "David Srbecky" <dsrbecky at gmail.com>
> To: "Kornél Pál" <kornelpal at gmail.com>
> Cc: <mono-devel-list at lists.ximian.com>
> Sent: Saturday, July 08, 2006 1:53 AM
> Subject: Re: [Mono-dev] Edit and Continue / Function body rewrite
>
>
>>> If you want to modify existing assemblies you should use Cecil 
>>> (http://www.mono-project.com/Cecil) because it is designed to do this 
>>> while System.Reflection.Emit is designed to emit new code and in fact
>>
>> I do not want to save the new IL code to assembly, I want to save it to 
>> memory to change a running program - but I know how to do that.
>>
>> The problem is that I need to somehow *get* the new IL code - do to that 
>> I need to use gmcs and System.Reflection.Emit.
>>
>>> it have less support for metadata creation than C# requires because 
>>> Microsoft is not using it for C# compilation so they didn't reallized 
>>> that System.Reflection.Emit lacks a lot of features.
>>
>> That's why I have to use Mono's System.Reflection.Emit not Mircosoft's
>>
>> David
>





More information about the Mono-devel-list mailing list