Hi,

I'm not going to be able to debug your entire program I'm afraid.

What happens if you run peverify on your modified binary?

Thanks,
Jb

On Fri, Nov 13, 2015 at 6:15 AM, Austin Brkich <[email protected]> wrote:
> Somewhat related to this issue is that I am having issued making a call now
> to Nullable<Boolean>.HasValue but I am only able to replicate this in my
> actual program. The program is an attempt to add a Modding API to a game and
> it does this by parsing an XML file to figure out what needs to be inserted
> and where.
>
> This file represents how Call OpCodes are handled.
> https://github.com/7H3LaughingMan/PhiScript/blob/master/PhiPatcher/Instructions/Call.cs
>
>
> This is the actual XML file with all the modifications. I will include the
> part that I am having issues with.
> https://github.com/7H3LaughingMan/PhiScript/blob/master/PhiPatcher/Modifications.xml
>
> <Instruction OpCode="Call" Assembly="CoreLibrary" Type="System.Nullable`1"
> Method="get_HasValue">
> <GenericParameter Assembly="CoreLibrary" Type="System.Boolean" />
> </Instruction>
>
> This is the exception I am getting.
> InvalidProgramException: Invalid IL code in
> Planetbase.ConstructionComponent:canProduce (): IL_000a: call
> 0x0a0001bc
>
> And using ILSpy this is the resulting IL code.
> IL_000a: call instance bool valuetype
> [mscorlib]System.Nullable`1<bool>::get_HasValue()
>
>
> On Sunday, November 8, 2015 at 11:59:50 AM UTC-6, Jb Evain wrote:
>>
>> Hi Austin,
>>
>> Yeah dealing with generics is not always a pleasant experience right now.
>>
>> Here's code that works:
>>
>> http://paste2.org/YeD09NEI
>>
>> Always work with definitions until you need to create references in
>> your module, it's much easier. In this case, retrieve the definition
>> from get_Value, up until the point where you create a reference.
>>
>> And then there's the MakeGeneric method that should be in
>> Mono.Cecil.Rocks but isn't.
>>
>> Jb
>>
>> On Sat, Nov 7, 2015 at 6:59 AM, Austin Brkich <[email protected]> wrote:
>> > I am having issues trying to create a instruction to call
>> > Nullable<Boolean>.Value
>> >
>> > The closest I have come is by using the following code as it will
>> > generate
>> > ILCode that appears to be almost identical to what it was originally. I
>> > have
>> > also included the Test.exe that I am modifying, In this example I am
>> > replacing a call to Nullable<Boolean>.Value that was generated from the
>> > compiler with one generated by Mono.Cecil, but I am getting the
>> > following
>> > error when trying to run the modified executable.
>> >
>> > https://gist.github.com/7H3LaughingMan/311662c07b8bf8f8d2c6
>> > https://dl.dropboxusercontent.com/u/7231478/Test.exe
>> >
>> > Unhandled Exception: System.TypeLoadException: Could not load type
>> > 'System.Nullable`1' from assembly 'Test, Version=1.0.0.0,
>> > Culture=neutral,
>> > PublicKeyToken=null' due to value type mismatch.
>> >    at Test.Program.Main(String[] args)
>> >
>> > --
>> > --
>> > --
>> > mono-cecil
>> > ---
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "mono-cecil" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to [email protected].
>> > For more options, visit https://groups.google.com/d/optout.
>
> --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to