private void LoadPluginInfo()
{
if (!Directory.Exists(_pluginDir))
throw new PluginException(SR.ExceptionPluginDirectoryNotFound);
_plugins.AddRange(_loader.LoadPluginInfo());
// If no plugins were loaded, nothing else to do
if (_plugins.Count == 0)
return;
// compile lists of all extension points and extensions
var extensions = new List<ExtensionInfo>(_plugins.SelectMany(p => p.Extensions));
var points = new List<ExtensionPointInfo>(_plugins.SelectMany(p => p.ExtensionPoints));
// hack: add points and extensions from ClearCanvas.Common, which isn't technically a plugin
PluginInfo.DiscoverExtensionPointsAndExtensions(GetType().Assembly, points, extensions);
// #742: order the extensions according to the XML configuration
var ordered = ExtensionSettings.Default.OrderExtensions(extensions);
// create global extension list
_extensions.AddRange(ordered);
// points do not need to be ordered
_extensionPoints.AddRange(points);
_pluginsLoaded = true;
}