Web Api relies on IHttpControllerSelector to select an api controller to handle the request, from which it has a default implementation, which is based on IAssembliesResolver to solve assemblies for finding api controllers.
With a minimal minimum change, you can replace this collector with a special implementation that will load other libraries for you.
A very naive example might look like this:
public class CustomAssemblyResolver : IAssembliesResolver { public List<string> PluginNames { get; set; } public CustomAssemblyResolver() { PluginNames = new List<string>();
Then you can replace the default recognizer with this code
config.Services.Replace(typeof(IAssembliesResolver), new CustomAssemblyResolver());
inside your Register method of the WebApiConfig class.
Then copy all your additional libraries with controller classes to the bin directory, and you're done.
If you need another setting to select a controller, you can go to the custom implementation of IHttpControllerSelector and replace the existing implementation in the same way.
Mat j source share