Reputation: 2077
I need to execute a method in an assembly loaded during runtime. The assemblies that I'm going to load are plugins that contain interface implementations.
This is the loading class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
namespace Stub.Logic {
public class DllReader {
private static List<Type> connectionTypes = new List<Type>();
public static void LoadConnectionTypes(string path) {
DirectoryInfo dllDirectory = new DirectoryInfo(path);
FileInfo[] dlls = dllDirectory.GetFiles("*.dll");
foreach (FileInfo dllFileInfo in dlls) {
Assembly assembly = Assembly.Load(dllFileInfo.FullName);
connectionTypes.AddRange(assembly.GetTypes());
}
}
//public static Connection GetConnection(string connectionTypeName) {
// return new Connection();
//}
}
}
I'm getting this error:
Could not load file or assembly '..\Plugins\MqConnection.dll' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
This is the loaded assembly:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.IO;
using Stub.Logic;
namespace MqConnection {
public class MqConnection : Connection {
// Stuff here...
}
}
What am I doing wrong?
Upvotes: 1
Views: 1694
Reputation: 3628
Assembly.Load takes an Assembly name, not a file path. Use Assebmly.LoadFrom instead
Upvotes: 4