如何从VB.NET WinForms项目调用VB.NET DLL中的函数与子程序?
问题排查与解决步骤
1. 检查DLL中类和方法的访问修饰符
这是最常见的问题根源:
- 你的类必须标记为
Public,否则外部项目无法访问该类 - 如果想直接通过
类名.方法名的方式调用(比如你尝试的MFGSystems.Common.Resources.KillAProcess),方法必须标记为Public Shared
示例DLL代码:
Namespace MFGSystems.Common.Resources ' 类必须是Public才能被外部项目访问 Public Class ProcessTools ' 加Shared才能直接通过类名调用,不需要实例化 Public Shared Sub KillAProcess(processName As String) ' 你的实现逻辑 For Each proc In System.Diagnostics.Process.GetProcessesByName(processName) proc.Kill() Next End Sub End Class End Namespace
如果不使用Shared,你需要先实例化类再调用方法:
' WinForms项目中的调用代码 Dim processTool As New MFGSystems.Common.Resources.ProcessTools() processTool.KillAProcess("Explorer")
2. 确认项目引用的正确性
- 确保WinForms项目引用的是最新编译的DLL文件,如果是同一个解决方案,直接引用DLL项目而非手动添加文件引用,避免引用旧版本
- 检查DLL和WinForms项目的目标框架版本是否兼容,比如DLL是.NET Framework 4.8,WinForms项目不能用.NET 6(除非是兼容模式),框架不匹配会导致无法正确识别类和方法
3. 核对命名空间与类名拼写
确认DLL中的命名空间确实是MFGSystems.Common.Resources,类名和方法名没有拼写错误——有时候大小写或者细微的拼写差异会导致找不到方法
内容的提问来源于stack exchange,提问作者Daniel Santos
相关产品推荐
相关产品推荐

