• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1948
  • Last Modified:

Loading modules (.dll) dynamically in VB.Net 2005

Hi all,

i'm wondering if it is possible (and how) to dynamically load pieces of my program.

I'd like to create different parts of my program and compile them as dll's.  Then my main program will load the dll's that it finds in a folder.

For example,

in my .\Plugins folder I have the following:

Orders.dll
Inventory.dll
Customers.dll

(each of them is part of a GUI - with interfaces to access a Panel, MenuItem, and TreeNode)

when my program loads, it will look in .\Plugins and load each of the dlls it finds (each one will have the same entry format)

on an update i add Ledger.dll to the .\Plugins folder, and the next time the program runs, it loads Ledger.dll also.

can this be done? or do i need to hard-code the declarations?

thanks!

J
0
sgaggerj
Asked:
sgaggerj
  • 2
  • 2
3 Solutions
 
PaulHewsCommented:
It can be done.  Assuming you want them to derive from a common interface, you create the interface first in an assembly, and reference that in both the client and plugins.  Then you can create instances using reflection.
Private Function GetPluginFromAssembly(ByVal PluginAssembly As String, ByVal PluginClassName As String, ByVal PluginAssemblyPath As String) As PluginBase.IPlugin
    Dim oCurrentAssembly As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
    Dim oTemplateAssembly As [Assembly]
    Dim oPlugin As Object
    Dim sTemplateNameAndPath As String = System.IO.Path.Combine(PluginAssemblyPath, PluginAssembly)
    If System.IO.File.Exists(sTemplateNameAndPath) Then
        oTemplateAssembly = Assembly.LoadFrom(sTemplateNameAndPath)
        oPlugin = Activator.CreateInstance(oTemplateAssembly.GetType(PluginClassName, True))
        Return CType(oPlugin, PluginBase.IPlugin)
    End If
 
End Function

Open in new window

0
 
sgaggerjAuthor Commented:
Thanks - could you elaborate a little more? Maybe an example?
0
 
Éric MoreauSenior .Net ConsultantCommented:
0
 
PaulHewsCommented:
It's fairly involved.  There are some articles that can walk you through all the concepts:

Interfaces
http://www.developer.com/lang/other/article.php/939411

Plugin architecture in vb.net
http://www.developerfusion.co.uk/show/4371/
0
 
sgaggerjAuthor Commented:
that seems to help out alot more!

thanks!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now