Hi Michael

Are you looking for something like this
CreateTestExe.cs<http://code.google.com/p/o2platform/source/browse/trunk/O2%20-%20All%20Active%20Projects/O2%20Modules%20Using%203rd%20Party%20Dlls/O2_External_O2Mono/MonoCecil/CreateTestExe.cs>
?
(here are a bunch of helper methods
CecilAssemblyBuilder.cs<http://code.google.com/p/o2platform/source/browse/trunk/O2%20-%20All%20Active%20Projects/O2%20Modules%20Using%203rd%20Party%20Dlls/O2_External_O2Mono/MonoCecil/CecilAssemblyBuilder.cs>
which
I think should help you to *'... emit an assembly/module/Type from
scratch...' *).

I used this to create a Exe on demand for O2
Platform<http://www.owasp.org/index.php/OWASP_O2_Platform>'s
unit tests.

Another example you might find useful is the
StandAloneExe.cs<http://code.google.com/p/o2platform/source/browse/trunk/O2+-+All+Active+Projects/O2+Modules+Using+3rd+Party+Dlls/O2_External_O2Mono/MonoCecil/>
which
an interesting variation that creates an *.Exe that will invoke a particular
.NET method (at the moment it only supports static public methods with no
parameters). I use this trick to debug O2's XRules scripts or to be able to
start a debugging session in the middle of an .NET Assembly)

Dinis Cruz

2010/1/7 Michael Kohout <[email protected]>

> Thanks for the pointer...that seems to have moved me to my next errors :-)
>
> Is there any good example of using Cecil to emit an assembly/module/Type
> from scratch?  My current MO is to create a simple example DLL in C#, open
> it with Cecil to inspect it, and then try to duplicate it via Cecil in my F#
> repl.  So far I'm not really having any success.  Either Cecil throws an
> exception or sometimes it just emits an empty assembly(without a simple type
> I'm trying to create).
>
> Previously my MO was to try using Cecil along with Serge Lidin's "Expert
> .Net 2.0 IL Assembler", but the differences in Cecil's API to pure textual
> IL is too much for my mind to compensate.
>
> Any pointers would be appreciated.
>
> Mike Kohout
>
> On Thu, Jan 7, 2010 at 5:50 AM, Jb Evain <[email protected]> wrote:
>
>> Hi Michael,
>>
>> On Tue, Jan 5, 2010 at 8:14 AM, Michael Kohout <[email protected]>
>> wrote:
>> >    at Mono.Cecil.ModuleDefinition.Inject(TypeDefinition type)
>> >    at <StartupCode$FSI_0003>.$FSI_0003.main@() in C:\Users\Michael
>> > Kohout\Documents\CecilCompiler\CecilCompiler\Script.fsx:line 22
>>
>> Don't call Inject to add a type to an assembly. Just add it to the
>> .Types collection on the module. Inject was meant to inject a type
>> from an assembly to another, but it's too simplistic to be used in
>> real cases.
>>
>> --
>> Jb Evain  <[email protected]>
>>
>> --
>> --
>> mono-cecil
>>
>
>
> --
> --
> mono-cecil
>
-- 
--
mono-cecil

Reply via email to