使用VBCodeProvider()在C#中构建VB程序集.CompileAssemblyFromSource但无法访问VB代码中的函数

VB代码:

Public Module OnlyModule
    Public Sub OnlyFunction()
        'do stuff
    End Sub
End Module

C#代码:

    Assembly vbAssembly = BuildAssembly(vbCode); //wrapper function, but returns valid, compiled vb assembly
    Module module = vbAssembly.GetModules()[0];
    MethodInfo method = module.GetMethods()[0]; //returns 0 methods!!
    method.Invoke(null, null);

正如您所看到的,只有一个模块,其中只有一个函数,为什么我对GetMethods()的调用不起作用?我对VB并不完全熟悉,但它应该是一个静态方法,而且我认为它只是作为模块内部的子方式编写的.

最佳答案 想出来,需要使用GetType()而不是GetModule():

Type type = vbAssembly.GetType("OnlyModule");
Method method = type.GetMethods()[0];

工作:)

点赞