Я нашел этот вопрос и некоторые ответы очень полезными, однако у меня были проблемы с путями, поэтому этот ответ охватывал бы загрузку библиотеки путем нахождения пути к каталогу bin.
Первое решение:
string assemblyName = "library.dll";
string assemblyPath = HttpContext.Current.Server.MapPath("~/bin/" + assemblyName);
Assembly assembly = Assembly.LoadFrom(assemblyPath);
Type T = assembly.GetType("Company.Project.Classname");
Company.Project.Classname instance = (Company.Project.Classname) Activator.CreateInstance(T);
Второе решение
string assemblyName = "library.dll";
string assemblyPath = HttpContext.Current.Server.MapPath("~/bin/" + assemblyName);
Assembly assembly = Assembly.LoadFile(assemblyPath);
(Company.Project.Classname) instance = (Company.Project.Classname) assembly.CreateInstance("Company.Project.Classname");
Вы можете использовать тот же принцип для интерфейсов (вы будете создавать класс, но приведение к интерфейсу), например:
(Company.Project.Interfacename) instance = (Company.Project.Interfacename) assembly.CreateInstance("Company.Project.Classname");
Этот пример относится к веб-приложению, но подобное можно использовать и для настольных приложений, иначе разрешается только путь, например
Path.GetDirectoryName(Application.ExecutablePath)