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 {
|
namespace Orchard.Environment.Extensions.Loaders {
|
||||||
public class AreaExtensionLoader : ExtensionLoaderBase {
|
public class AreaExtensionLoader : ExtensionLoaderBase {
|
||||||
|
private readonly IAssemblyLoader _assemblyLoader;
|
||||||
|
|
||||||
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder)
|
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
|
||||||
: base(dependenciesFolder) {
|
: base(dependenciesFolder) {
|
||||||
|
_assemblyLoader = assemblyLoader;
|
||||||
|
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
@@ -33,7 +35,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
|||||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||||
|
|
||||||
var assembly = Assembly.Load("Orchard.Web");
|
var assembly = _assemblyLoader.Load("Orchard.Web");
|
||||||
|
|
||||||
return new ExtensionEntry {
|
return new ExtensionEntry {
|
||||||
Descriptor = descriptor,
|
Descriptor = descriptor,
|
||||||
|
@@ -10,9 +10,11 @@ namespace Orchard.Environment.Extensions.Loaders {
|
|||||||
/// Load an extension by looking into specific namespaces of the "Orchard.Core" assembly
|
/// Load an extension by looking into specific namespaces of the "Orchard.Core" assembly
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class CoreExtensionLoader : ExtensionLoaderBase {
|
public class CoreExtensionLoader : ExtensionLoaderBase {
|
||||||
|
private readonly IAssemblyLoader _assemblyLoader;
|
||||||
|
|
||||||
public CoreExtensionLoader(IDependenciesFolder dependenciesFolder)
|
public CoreExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
|
||||||
: base(dependenciesFolder) {
|
: base(dependenciesFolder) {
|
||||||
|
_assemblyLoader = assemblyLoader;
|
||||||
|
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
@@ -36,7 +38,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
|||||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||||
|
|
||||||
var assembly = Assembly.Load("Orchard.Core");
|
var assembly = _assemblyLoader.Load("Orchard.Core");
|
||||||
|
|
||||||
return new ExtensionEntry {
|
return new ExtensionEntry {
|
||||||
Descriptor = descriptor,
|
Descriptor = descriptor,
|
||||||
|
@@ -15,9 +15,11 @@ namespace Orchard.Environment {
|
|||||||
|
|
||||||
public class DefaultBuildManager : IBuildManager {
|
public class DefaultBuildManager : IBuildManager {
|
||||||
private readonly IVirtualPathProvider _virtualPathProvider;
|
private readonly IVirtualPathProvider _virtualPathProvider;
|
||||||
|
private readonly IAssemblyLoader _assemblyLoader;
|
||||||
|
|
||||||
public DefaultBuildManager(IVirtualPathProvider virtualPathProvider) {
|
public DefaultBuildManager(IVirtualPathProvider virtualPathProvider, IAssemblyLoader assemblyLoader) {
|
||||||
_virtualPathProvider = virtualPathProvider;
|
_virtualPathProvider = virtualPathProvider;
|
||||||
|
_assemblyLoader = assemblyLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Assembly> GetReferencedAssemblies() {
|
public IEnumerable<Assembly> GetReferencedAssemblies() {
|
||||||
@@ -33,7 +35,7 @@ namespace Orchard.Environment {
|
|||||||
if (!HasReferencedAssembly(name))
|
if (!HasReferencedAssembly(name))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return Assembly.Load(name);
|
return _assemblyLoader.Load(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -41,19 +43,4 @@ namespace Orchard.Environment {
|
|||||||
return BuildManager.GetCompiledAssembly(virtualPath);
|
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;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Orchard.Environment;
|
||||||
using Orchard.FileSystems.AppData;
|
using Orchard.FileSystems.AppData;
|
||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
|
|
||||||
@@ -7,9 +8,11 @@ namespace Orchard.FileSystems.Dependencies {
|
|||||||
public class DefaultAssemblyProbingFolder : IAssemblyProbingFolder {
|
public class DefaultAssemblyProbingFolder : IAssemblyProbingFolder {
|
||||||
private const string BasePath = "Dependencies";
|
private const string BasePath = "Dependencies";
|
||||||
private readonly IAppDataFolder _appDataFolder;
|
private readonly IAppDataFolder _appDataFolder;
|
||||||
|
private readonly IAssemblyLoader _assemblyLoader;
|
||||||
|
|
||||||
public DefaultAssemblyProbingFolder(IAppDataFolder appDataFolder) {
|
public DefaultAssemblyProbingFolder(IAppDataFolder appDataFolder, IAssemblyLoader assemblyLoader) {
|
||||||
_appDataFolder = appDataFolder;
|
_appDataFolder = appDataFolder;
|
||||||
|
_assemblyLoader = assemblyLoader;
|
||||||
|
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
@@ -39,7 +42,7 @@ namespace Orchard.FileSystems.Dependencies {
|
|||||||
if (!_appDataFolder.FileExists(path))
|
if (!_appDataFolder.FileExists(path))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return Assembly.Load(moduleName);
|
return _assemblyLoader.Load(moduleName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteAssembly(string moduleName) {
|
public void DeleteAssembly(string moduleName) {
|
||||||
|
@@ -36,11 +36,13 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
|||||||
foreach (var entry in entries) {
|
foreach (var entry in entries) {
|
||||||
if (entry.directive != null) {
|
if (entry.directive != null) {
|
||||||
if (entry.directive.StartsWith("<%@ Assembly Name=\"")) {
|
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=\"")) {
|
else if (entry.directive.StartsWith("<%@ Assembly Src=\"")) {
|
||||||
// Returned assembly may be null if the .csproj file doesn't containt any .cs file, for example
|
// 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)
|
if (assembly != null)
|
||||||
provider.AssemblyBuilder.AddAssemblyReference(assembly);
|
provider.AssemblyBuilder.AddAssemblyReference(assembly);
|
||||||
}
|
}
|
||||||
@@ -57,12 +59,14 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
|||||||
set {
|
set {
|
||||||
_hostContainer = value;
|
_hostContainer = value;
|
||||||
BuildManager = _hostContainer.Resolve<IBuildManager>();
|
BuildManager = _hostContainer.Resolve<IBuildManager>();
|
||||||
|
AssemblyLoader = _hostContainer.Resolve<IAssemblyLoader>();
|
||||||
DependenciesFolder = _hostContainer.Resolve<IDependenciesFolder>();
|
DependenciesFolder = _hostContainer.Resolve<IDependenciesFolder>();
|
||||||
Loaders = _hostContainer.Resolve<IEnumerable<IExtensionLoader>>();
|
Loaders = _hostContainer.Resolve<IEnumerable<IExtensionLoader>>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBuildManager BuildManager { get; set; }
|
public IBuildManager BuildManager { get; set; }
|
||||||
|
public IAssemblyLoader AssemblyLoader { get; set; }
|
||||||
public IDependenciesFolder DependenciesFolder { get; set; }
|
public IDependenciesFolder DependenciesFolder { get; set; }
|
||||||
public IEnumerable<IExtensionLoader> Loaders { get; set; }
|
public IEnumerable<IExtensionLoader> Loaders { get; set; }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user