mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Replace all Assembly.Load usages
All Orchard components now use "IAssemblyLoader.Load" instead of "Assembly.Load" for correctness. --HG-- branch : perf
This commit is contained in:
@@ -7,9 +7,11 @@ using Orchard.Logging;
|
||||
|
||||
namespace Orchard.Environment.Extensions.Loaders {
|
||||
public class AreaExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly IAssemblyLoader _assemblyLoader;
|
||||
|
||||
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder)
|
||||
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
|
||||
: base(dependenciesFolder) {
|
||||
_assemblyLoader = assemblyLoader;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
@@ -33,7 +35,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
var assembly = Assembly.Load("Orchard.Web");
|
||||
var assembly = _assemblyLoader.Load("Orchard.Web");
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
|
@@ -10,9 +10,11 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
/// Load an extension by looking into specific namespaces of the "Orchard.Core" assembly
|
||||
/// </summary>
|
||||
public class CoreExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly IAssemblyLoader _assemblyLoader;
|
||||
|
||||
public CoreExtensionLoader(IDependenciesFolder dependenciesFolder)
|
||||
public CoreExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
|
||||
: base(dependenciesFolder) {
|
||||
_assemblyLoader = assemblyLoader;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
@@ -36,7 +38,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
var assembly = Assembly.Load("Orchard.Core");
|
||||
var assembly = _assemblyLoader.Load("Orchard.Core");
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
|
@@ -15,9 +15,11 @@ namespace Orchard.Environment {
|
||||
|
||||
public class DefaultBuildManager : IBuildManager {
|
||||
private readonly IVirtualPathProvider _virtualPathProvider;
|
||||
private readonly IAssemblyLoader _assemblyLoader;
|
||||
|
||||
public DefaultBuildManager(IVirtualPathProvider virtualPathProvider) {
|
||||
public DefaultBuildManager(IVirtualPathProvider virtualPathProvider, IAssemblyLoader assemblyLoader) {
|
||||
_virtualPathProvider = virtualPathProvider;
|
||||
_assemblyLoader = assemblyLoader;
|
||||
}
|
||||
|
||||
public IEnumerable<Assembly> GetReferencedAssemblies() {
|
||||
@@ -33,7 +35,7 @@ namespace Orchard.Environment {
|
||||
if (!HasReferencedAssembly(name))
|
||||
return null;
|
||||
|
||||
return Assembly.Load(name);
|
||||
return _assemblyLoader.Load(name);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,19 +43,4 @@ namespace Orchard.Environment {
|
||||
return BuildManager.GetCompiledAssembly(virtualPath);
|
||||
}
|
||||
}
|
||||
|
||||
public static class BuildManagerExtensions {
|
||||
public static IEnumerable<string> GetReferencedAssemblyNames(this IBuildManager buildManager) {
|
||||
return buildManager
|
||||
.GetReferencedAssemblies()
|
||||
.Select(a => ExtractAssemblyName(a.FullName));
|
||||
}
|
||||
|
||||
public static string ExtractAssemblyName(string fullName) {
|
||||
int index = fullName.IndexOf(',');
|
||||
if (index < 0)
|
||||
return fullName;
|
||||
return fullName.Substring(0, index);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Orchard.Environment;
|
||||
using Orchard.FileSystems.AppData;
|
||||
using Orchard.Logging;
|
||||
|
||||
@@ -7,9 +8,11 @@ namespace Orchard.FileSystems.Dependencies {
|
||||
public class DefaultAssemblyProbingFolder : IAssemblyProbingFolder {
|
||||
private const string BasePath = "Dependencies";
|
||||
private readonly IAppDataFolder _appDataFolder;
|
||||
private readonly IAssemblyLoader _assemblyLoader;
|
||||
|
||||
public DefaultAssemblyProbingFolder(IAppDataFolder appDataFolder) {
|
||||
public DefaultAssemblyProbingFolder(IAppDataFolder appDataFolder, IAssemblyLoader assemblyLoader) {
|
||||
_appDataFolder = appDataFolder;
|
||||
_assemblyLoader = assemblyLoader;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
@@ -39,7 +42,7 @@ namespace Orchard.FileSystems.Dependencies {
|
||||
if (!_appDataFolder.FileExists(path))
|
||||
return null;
|
||||
|
||||
return Assembly.Load(moduleName);
|
||||
return _assemblyLoader.Load(moduleName);
|
||||
}
|
||||
|
||||
public void DeleteAssembly(string moduleName) {
|
||||
|
@@ -36,11 +36,13 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
||||
foreach (var entry in entries) {
|
||||
if (entry.directive != null) {
|
||||
if (entry.directive.StartsWith("<%@ Assembly Name=\"")) {
|
||||
provider.AssemblyBuilder.AddAssemblyReference(Assembly.Load(entry.descriptor.Name));
|
||||
var assembly = AssemblyLoader.Load(entry.descriptor.Name);
|
||||
if (assembly != null)
|
||||
provider.AssemblyBuilder.AddAssemblyReference();
|
||||
}
|
||||
else if (entry.directive.StartsWith("<%@ Assembly Src=\"")) {
|
||||
// Returned assembly may be null if the .csproj file doesn't containt any .cs file, for example
|
||||
Assembly assembly = BuildManager.GetCompiledAssembly(entry.descriptor.VirtualPath);
|
||||
var assembly = BuildManager.GetCompiledAssembly(entry.descriptor.VirtualPath);
|
||||
if (assembly != null)
|
||||
provider.AssemblyBuilder.AddAssemblyReference(assembly);
|
||||
}
|
||||
@@ -57,12 +59,14 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
||||
set {
|
||||
_hostContainer = value;
|
||||
BuildManager = _hostContainer.Resolve<IBuildManager>();
|
||||
AssemblyLoader = _hostContainer.Resolve<IAssemblyLoader>();
|
||||
DependenciesFolder = _hostContainer.Resolve<IDependenciesFolder>();
|
||||
Loaders = _hostContainer.Resolve<IEnumerable<IExtensionLoader>>();
|
||||
}
|
||||
}
|
||||
|
||||
public IBuildManager BuildManager { get; set; }
|
||||
public IAssemblyLoader AssemblyLoader { get; set; }
|
||||
public IDependenciesFolder DependenciesFolder { get; set; }
|
||||
public IEnumerable<IExtensionLoader> Loaders { get; set; }
|
||||
|
||||
|
Reference in New Issue
Block a user