Example #1
0
        /// <summary>
        /// 探测引用。
        /// </summary>
        /// <param name="descriptor">扩展描述符条目。</param>
        /// <returns>扩展音域探测条目集合。</returns>
        public override IEnumerable <ExtensionReferenceProbeEntry> ProbeReferences(ExtensionDescriptorEntry descriptor)
        {
            if (Disabled)
            {
                return(Enumerable.Empty <ExtensionReferenceProbeEntry>());
            }

            Logger.Information("探测模块 '{0}' 的引用信息", descriptor.Id);

            var assemblyPath = GetAssemblyPath(descriptor);

            if (assemblyPath == null)
            {
                return(Enumerable.Empty <ExtensionReferenceProbeEntry>());
            }

            var result = _applicationFolder
                         .ListFiles(_applicationFolder.GetDirectoryName(assemblyPath))
                         .Where(s => StringComparer.OrdinalIgnoreCase.Equals(Path.GetExtension(s), ".dll"))
                         .Where(s => !StringComparer.OrdinalIgnoreCase.Equals(Path.GetFileNameWithoutExtension(s), descriptor.Id))
                         .Select(path => new ExtensionReferenceProbeEntry
            {
                Descriptor  = descriptor,
                Loader      = this,
                Name        = Path.GetFileNameWithoutExtension(path),
                VirtualPath = path
            })
                         .ToList();

            Logger.Information("完成模块 '{0}' 的引用探测", descriptor.Id);
            return(result);
        }