/// <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);
                }
            }
        }