/// <summary> /// Scans the assemblies for which the given file paths have been provided and /// returns the plugin description information. /// </summary> /// <param name="assemblyFilesToScan"> /// The collection that contains the file paths to all the assemblies to be scanned. /// </param> public void Scan(IEnumerable <string> assemblyFilesToScan) { var domain = m_AppDomainBuilder(Resources.Plugins_PluginScanDomainName, AppDomainPaths.Plugins); try { // Inject the actual scanner var loader = domain.CreateInstanceAndUnwrap( typeof(AppDomainPluginClassLoader).Assembly.FullName, typeof(AppDomainPluginClassLoader).FullName) as AppDomainPluginClassLoader; var logger = new LogForwardingPipe(m_Diagnostics); var repositoryProxy = new PluginRepositoryProxy(m_Repository); var scannerProxy = loader.Load(repositoryProxy, logger); scannerProxy.Scan(assemblyFilesToScan); } finally { if (domain != null) { AppDomain.Unload(domain); } } }
/// <summary> /// Scans the assemblies for which the given file paths have been provided and /// returns the plugin description information. /// </summary> /// <param name="assemblyFilesToScan"> /// The collection that contains the file paths to all the assemblies to be scanned. /// </param> public void Scan(IEnumerable<string> assemblyFilesToScan) { var domain = m_AppDomainBuilder(Resources.Plugins_PluginScanDomainName, AppDomainPaths.Plugins); try { // Inject the actual scanner var loader = domain.CreateInstanceAndUnwrap( typeof(AppDomainPluginClassLoader).Assembly.FullName, typeof(AppDomainPluginClassLoader).FullName) as AppDomainPluginClassLoader; var logger = new LogForwardingPipe(m_Diagnostics); var repositoryProxy = new PluginRepositoryProxy(m_Repository); var scannerProxy = loader.Load(repositoryProxy, logger); scannerProxy.Scan(assemblyFilesToScan); } finally { if (domain != null) { AppDomain.Unload(domain); } } }