由于
foxtable
是使用vb.net 编写,狐友们对vb.net
的语法也更加的了解,所以本文也使用vb.net
进行介绍.
示例代码
https://gitee.com/weitieping/easy-foxtable-sample
需要的准备的开发环境
foxtable
Visual Studio (推荐使用Visual Studio 2019)
配置过程比较枯燥,阅读本文预计需要5分钟。如果觉得繁琐,请直接下载示例代码。
配置vb.net的环境
操作步骤:打开 Visual Studio>创建新项目>选择 vb.net 类库>创建>通过Nuget引入EasyFoxtable>配置FoxtableHandler文件>更改输出路径
第一步:打开Visual Studio
第二步:打开创建新项目
需要注意位置,将其更改为你的foxtable项目根目录(不是foxtable安装目录),方便管理。
将框架设为.NET Framework 4.5
及以上,这是因为EasyFoxtable引入了异步函数,需要.NET Framework 4.5
的特性支持。
第三步:引入EasyFoxtable
在这里根据你的foxtable版本,选择不同的EasyFoxtable包(目前只有商业板和开发板)。
需要注意右侧的版本号,前3位对应的是foxtable的版本号,一定要和你安装的foxtable的版本号对应。
最后一位是EasyFoxtable的更新版本,越高的越好(高版本拥有最新的功能还有修复旧版本的功能)
第四步:配置FoxtableHandler文件
创建 FoxtableHandler
类文件,并写入以下代码
Public Class FoxtableHandler
Inherits EasyFoxtable.FoxtableHandler
End Class
这一步是为了能让你在狐表中调用这个类库而准备的,狐表里面的所有的执行过程,都是经它转发。
第五步:更改输出路径
将生成好的文件生成到foxtable项目的根目录下
将foxtable及foxtable.Lib的赋值本地属性更改为False
image.png
在项目上右键打开右键菜单,并点击重新生成,此时你的foxtable项目根目录上应该已经有.net生成的文件了
配置foxtable的环境
操作步骤:添加全局代码>添加文件监视器代码>添加项目事件代码
第一步:打开全局代码写入以下代码(请注意,第2行和第3行需要根据你的项目重新配置
)
'====================参数配置(必填)====================
Public DLLFilePath As String = ProjectPath & "sample.dll" '用于填写您的DLL文件名(带路径)
Public ClassName As String = "sample.FoxtableHandler" '用于填写您的DLL中读取路由的类名(带命名空间)
'====================参数配置(结束)====================
'====================<<<EasyFoxtable(初学者切不可修改下方代码)>>>====================
''' <summary>
''' 已加载的程序集
''' </summary>
''' <param name="DllPath">DLL全路径</param>
''' <returns></returns>
''' <remarks></remarks>
Public m_Assembly As System.Reflection.Assembly = Nothing
''' <summary>
''' 重新加载DLL
''' </summary>
Public Function DllLoadFrom()
Return DllLoadFrom(DLLFilePath)
End Function
''' <summary>
''' 重新加载DLL
''' </summary>
Public Function DllLoadFrom(ByVal path As String) As Boolean
m_Assembly = Nothing
m_handler = Nothing
If FileSys.FileExists(path) = True Then
Dim buffer As Byte() = System.IO.File.ReadAllBytes(path)
m_Assembly = System.Reflection.Assembly.Load(buffer)
If m_Assembly IsNot Nothing Then
Return True
End If
Else
MessageBox.Show("插件加载异常,请联系开发人员处理!", "异常!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Return False
End Function
''' <summary>
''' 获取全局事件接口
''' </summary>
''' <param name="DllPath">DLL全路径</param>
''' <returns></returns>
''' <remarks></remarks>
Public ReadOnly Property handler As Object
Get
If m_handler Is Nothing AndAlso m_Assembly IsNot Nothing AndAlso ClassName > "" Then
m_handler = m_Assembly.CreateInstance(ClassName,True)
End If
Return m_handler
End Get
End Property
Private m_handler As Object
''' <summary>
''' 执行全局事件
''' </summary>
''' <param name="EventType">事件类型</param>
''' <param name="EventName">事件名称</param>
''' <param name="e">事件参数</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function InvokeMethod(ByVal EventType As Integer, ByVal EventName As String, ByVal e As Object) As Object
If handler IsNot Nothing Then
handler.InvokeMethod(EventType,EventName,e)
End If
End Function
'====================(结束)====================
第二步:在文件监视器的FileChanged事件和FileCreated事件中写入以下代码
If DLLFilePath > "" Then
DllLoadFrom()
MessageBox.Show("dll库更新成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
第三步:在项目事件的AfterOpenProject事件开启文件监视器的监听事件
'====================<<<EasyFoxtable-开启文件监听dll文件>>>====================
If DLLFilePath > "" Then
DllLoadFrom()
Dim info As New System.IO.FileInfo(DLLFilePath)
With FileWatcher
.Path = info.DirectoryName
.Filter = info.Name
.Delay = 500
.Enabled = True
End With
End If
第四步:在foxtable项目的根目录下,找到EasyFoxtable.dll(或EasyFoxtable.Develop.dll),将它复制到你的foxtable的安装目录
这个过程很重要,否则你会发现调用函数时没有任何反应。