Most ioc containers should support this. For example, with autofac you might do:
// in another assembly
class plugin {
// take in required services in the constructor
public plugin(ILogger logger) { ... }
}
var cb = new ContainerBuilder();
// register services which the plugins will depend on
cb.Register(cc => new Logger()).As<ILogger>();
var types = // load types
foreach (var type in types) {
cb.RegisterType(type); // logger will be injected
}
var container = cb.Build();
// to retrieve instances of the plugin
var plugin = cb.Resolve(pluginType);
Depending on how the rest of your app will call the plugins, you can alter the registrations appropriately (e. g. register with AsImplementedInterfaces() to retrieve the plugin by a known interface or Keyed to retrieve the plugin by some key object (e. g. a string)).