VB.net 加载在 VB.net 中创建的动态 DLL
VB.net load dynamic DLL created in VB.net
最初用VC++编写但在VB调用的DLL的简单动态加载如下:
Public Declare Sub Increase Lib "mylib.dll" (ByRef a As Double)
如果DLL代码也写在VB中呢?那怎么加载呢?让我们假设 DLL 代码是:
Public Class Class1
Public Sub Increase(ByRef a As double)
a=a+1
MsgBox("new value ="+a)
End Sub
End Class
我关心的是如何从 class Class1
.
加载和调用 Increase
请忽略我的小错别字
如果您的 DLL 是从 .NET 代码(VB.NET 或 C#)编译的,那么您有两个选择:
1) 添加对Visual Studio中DLL的引用。这使您受益于智能感知自动完成和来自 IDE 的其他帮助。我建议您这样做,除非您有充分的理由不这样做。
为此,首先在 Class 库项目中编译 Class1,然后在 Visual Studio 中创建要使用 DLL 的新项目。在 Visual Studio 中右键单击您的项目图标,单击“添加引用”,然后选择“浏览”。找到您的 DLL,然后将其添加到您的项目中。执行此操作后,您将能够使用 classes 和函数。它将以 ProjectName.Class1.Increase().
的形式提供
2) 在 运行 时间使用反射动态加载 DLL。这有几个缺点,例如不能使用智能感知,但如果您计划制作插件或在您自己的 DLL 中嵌入 DLL,则很有用。为此,您需要遵循@HansPassant 的建议并查看他给您的 link,特别是以下语句:
Use Assembly to define and load assemblies, load modules that are listed in the assembly manifest, and locate a type from this assembly and create an instance of it.
反射中的程序集 class 允许我们动态加载、编译和 运行 几乎任何 .NET 程序集。如果您刚开始 VB,您会发现这是一个挑战 - 但反思是值得了解的。在开始深入研究动态加载之前,您应该熟悉反射并大体了解自己在做什么。
最初用VC++编写但在VB调用的DLL的简单动态加载如下:
Public Declare Sub Increase Lib "mylib.dll" (ByRef a As Double)
如果DLL代码也写在VB中呢?那怎么加载呢?让我们假设 DLL 代码是:
Public Class Class1
Public Sub Increase(ByRef a As double)
a=a+1
MsgBox("new value ="+a)
End Sub
End Class
我关心的是如何从 class Class1
.
Increase
请忽略我的小错别字
如果您的 DLL 是从 .NET 代码(VB.NET 或 C#)编译的,那么您有两个选择:
1) 添加对Visual Studio中DLL的引用。这使您受益于智能感知自动完成和来自 IDE 的其他帮助。我建议您这样做,除非您有充分的理由不这样做。
为此,首先在 Class 库项目中编译 Class1,然后在 Visual Studio 中创建要使用 DLL 的新项目。在 Visual Studio 中右键单击您的项目图标,单击“添加引用”,然后选择“浏览”。找到您的 DLL,然后将其添加到您的项目中。执行此操作后,您将能够使用 classes 和函数。它将以 ProjectName.Class1.Increase().
的形式提供2) 在 运行 时间使用反射动态加载 DLL。这有几个缺点,例如不能使用智能感知,但如果您计划制作插件或在您自己的 DLL 中嵌入 DLL,则很有用。为此,您需要遵循@HansPassant 的建议并查看他给您的 link,特别是以下语句:
Use Assembly to define and load assemblies, load modules that are listed in the assembly manifest, and locate a type from this assembly and create an instance of it.
反射中的程序集 class 允许我们动态加载、编译和 运行 几乎任何 .NET 程序集。如果您刚开始 VB,您会发现这是一个挑战 - 但反思是值得了解的。在开始深入研究动态加载之前,您应该熟悉反射并大体了解自己在做什么。