[mono-vb] Using reflection to invoke a method written in VB throws an exception

Dale Ragan dale.ragan at sinesignal.com
Sun May 30 18:32:00 EDT 2010

First a little background, I am currently adding MonoDevelop support to an
open-source project called SpecFlow[1].  Just a quick intro to SpecFlow, it
allows us to create behavior driven specification tests based off a common
user story syntax called Gherkin.  It is very similar to Cucumber[2] for

Now for the problem, we have a test case to run external steps from other
assemblies and one of the assemblies is a VB compiled assembly.  MonoDevelop
is using the vbnc compiler that I built from svn.  Mono and MonoDevelop are
built from svn also.  These step methods are invoked using reflection.  I
have one class and two methods in this VB project and the first one executes
correctly, but the second one does not.  The only difference between the two
methods, is that the method that throws the exception is decorated with an
attribute called When.  The other method is decorated with an attribute
called Then.  Of course When is a keyword in VB, therefore we surround it
with [ ].  While invoking, MonoMethod throws a
System.InvalidProgramException:  Invalid IL code in
ExternalStepsVB.VBStepDefinitions:step2 (): IL_000f: ret at line 223 during
the call to InternalInvoke which is a pinvoke to a native method.  When I
translate the method using C# the test passes, so there shouldn't be
anything wrong with the code.

I decided to post here, since it is complaining about the IL and also to get
feedback before submitting a bug report.  You can grab my source[3] from
github and test the ExternalSteps test yourself with MonoDevelop using the
NUnitTestRunner to throw the exception that I am seeing.  Let me know if you
need anything else.



[1]: http://www.specflow.org/
[2]: http://cukes.info/
[3]: http://github.com/sinesignal/SpecFlow
View this message in context: http://mono.1490590.n4.nabble.com/Using-reflection-to-invoke-a-method-written-in-VB-throws-an-exception-tp2236684p2236684.html
Sent from the Mono - VB mailing list archive at Nabble.com.

More information about the Mono-vb mailing list