diff --git a/src/Orchard/Environment/Extensions/ExtensionManager.cs b/src/Orchard/Environment/Extensions/ExtensionManager.cs index a6636bfc3..19e80c12b 100644 --- a/src/Orchard/Environment/Extensions/ExtensionManager.cs +++ b/src/Orchard/Environment/Extensions/ExtensionManager.cs @@ -71,9 +71,14 @@ namespace Orchard.Environment.Extensions { } public IEnumerable LoadFeatures(IEnumerable featureDescriptors) { - return featureDescriptors + Logger.Information("Loading features"); + + var result = featureDescriptors .Select(descriptor => _cacheManager.Get(descriptor.Id, ctx => LoadFeature(descriptor))) .ToArray(); + + Logger.Information("Done loading features"); + return result; } private Feature LoadFeature(FeatureDescriptor featureDescriptor) { diff --git a/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs b/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs index 61502f6bf..b3d6d23f0 100644 --- a/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs +++ b/src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs @@ -94,18 +94,26 @@ namespace Orchard.Environment.Extensions.Loaders { } public override IEnumerable ProbeReferences(ExtensionDescriptor descriptor) { + if (Disabled) + return Enumerable.Empty(); + + Logger.Information("Probing references for module '{0}'", descriptor.Id); + string projectPath = GetProjectPath(descriptor); if (projectPath == null) return Enumerable.Empty(); var projectFile = _projectFileParser.Parse(projectPath); - return projectFile.References.Select(r => new ExtensionReferenceProbeEntry { + var result = projectFile.References.Select(r => new ExtensionReferenceProbeEntry { Descriptor = descriptor, Loader = this, Name = r.SimpleName, VirtualPath = _virtualPathProvider.GetProjectReferenceVirtualPath(projectPath, r.SimpleName, r.Path) }); + + Logger.Information("Done probing references for module '{0}'", descriptor.Id); + return result; } public override void ReferenceActivated(ExtensionLoadingContext context, ExtensionReferenceProbeEntry referenceEntry) { @@ -132,28 +140,43 @@ namespace Orchard.Environment.Extensions.Loaders { } public override Assembly LoadReference(DependencyReferenceDescriptor reference) { + if (Disabled) + return null; + + Logger.Information("Loading reference '{0}'", reference.Name); + // DynamicExtensionLoader has 2 types of references: assemblies from module bin directory // and .csproj. + Assembly result; if (StringComparer.OrdinalIgnoreCase.Equals(Path.GetExtension(reference.VirtualPath), ".dll")) - return _assemblyProbingFolder.LoadAssembly(reference.Name); + result = _assemblyProbingFolder.LoadAssembly(reference.Name); + else { + result = _buildManager.GetCompiledAssembly(reference.VirtualPath); + } - return _buildManager.GetCompiledAssembly(reference.VirtualPath); + Logger.Information("Done loading reference '{0}'", reference.Name); + return result; } public override ExtensionProbeEntry Probe(ExtensionDescriptor descriptor) { if (Disabled) return null; + Logger.Information("Probing for module '{0}'", descriptor.Id); + string projectPath = GetProjectPath(descriptor); if (projectPath == null) return null; - return new ExtensionProbeEntry { + var result = new ExtensionProbeEntry { Descriptor = descriptor, LastWriteTimeUtc = GetDependencies(projectPath).Max(f => _virtualPathProvider.GetFileLastWriteTimeUtc(f)), Loader = this, VirtualPath = projectPath }; + + Logger.Information("Done probing for module '{0}'", descriptor.Id); + return result; } protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) { diff --git a/src/Orchard/Environment/Extensions/Loaders/PrecompiledExtensionLoader.cs b/src/Orchard/Environment/Extensions/Loaders/PrecompiledExtensionLoader.cs index ce9f0d59a..650a43ba3 100644 --- a/src/Orchard/Environment/Extensions/Loaders/PrecompiledExtensionLoader.cs +++ b/src/Orchard/Environment/Extensions/Loaders/PrecompiledExtensionLoader.cs @@ -144,11 +144,16 @@ namespace Orchard.Environment.Extensions.Loaders { } public override IEnumerable ProbeReferences(ExtensionDescriptor descriptor) { + if (Disabled) + return Enumerable.Empty(); + + Logger.Information("Probing references for module '{0}'", descriptor.Id); + var assemblyPath = GetAssemblyPath(descriptor); if (assemblyPath == null) return Enumerable.Empty(); - return _virtualPathProvider + var result = _virtualPathProvider .ListFiles(_virtualPathProvider.GetDirectoryName(assemblyPath)) .Where(s => StringComparer.OrdinalIgnoreCase.Equals(Path.GetExtension(s), ".dll")) .Where(s => !StringComparer.OrdinalIgnoreCase.Equals(Path.GetFileNameWithoutExtension(s), descriptor.Id)) @@ -159,6 +164,9 @@ namespace Orchard.Environment.Extensions.Loaders { VirtualPath = path } ) .ToList(); + + Logger.Information("Done probing references for module '{0}'", descriptor.Id); + return result; } public override bool IsCompatibleWithModuleReferences(ExtensionDescriptor extension, IEnumerable references) { @@ -176,20 +184,33 @@ namespace Orchard.Environment.Extensions.Loaders { if (Disabled) return null; + Logger.Information("Probing for module '{0}'", descriptor.Id); + var assemblyPath = GetAssemblyPath(descriptor); if (assemblyPath == null) return null; - return new ExtensionProbeEntry { + var result = new ExtensionProbeEntry { Descriptor = descriptor, LastWriteTimeUtc = _virtualPathProvider.GetFileLastWriteTimeUtc(assemblyPath), Loader = this, VirtualPath = assemblyPath }; + + Logger.Information("Done probing for module '{0}'", descriptor.Id); + return result; } public override Assembly LoadReference(DependencyReferenceDescriptor reference) { - return _assemblyProbingFolder.LoadAssembly(reference.Name); + if (Disabled) + return null; + + Logger.Information("Loading reference '{0}'", reference.Name); + + var result = _assemblyProbingFolder.LoadAssembly(reference.Name); + + Logger.Information("Done loading reference '{0}'", reference.Name); + return result; } protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {