使用 VBCodeProvider() 在 C# 中构建 VB 程序集.CompileAssemblyFromSourc
本文关键字:构建 VB 程序集 CompileAssemblyFromSourc VBCodeProvider 使用 | 更新日期: 2023-09-27 18:33:27
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,但它应该是一个静态方法,我认为它以正确的方式编写为模块中的 sub
想通了,需要使用 GetType() 而不是 GetModule():
Type type = vbAssembly.GetType("OnlyModule");
Method method = type.GetMethods()[0];
作品:)