Hi Austin, Peverify is telling you that the semantic of the code is wrong.
Can you pastebin the entire IL of the method? Jb On Fri, Nov 13, 2015 at 10:43 AM, Austin Brkich <[email protected]> wrote: > This is what I get when running peverify > > [IL]: Error: [C:\Program Files > (x86)\Steam\SteamApps\common\Planetbase\Planetbase_Data\Managed\Assembly-CSharp.dll > : Planetbase.ConstructionComponent::canProduce][offset 0x0000000A][found > value 'System.Nullable`1[System.Boolean]'][expected address of value > 'System.Nullable`1[System.Boolean]'] Unexpected type on the stack. > > [IL]: Error: [C:\Program Files > (x86)\Steam\SteamApps\common\Planetbase\Planetbase_Data\Managed\Assembly-CSharp.dll > : Planetbase.ConstructionComponent::canProduce][offset 0x00000013][found > value 'System.Nullable`1[System.Boolean]'][expected address of value > 'System.Nullable`1[System.Boolean]'] Unexpected type on the stack. > > 2 Error(s) Verifying Assembly-CSharp.dll > > On Friday, November 13, 2015 at 12:26:12 PM UTC-6, Jb Evain wrote: >> >> 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. -- -- -- 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.
