85 lines
1.9 KiB
C#
85 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
|
|
namespace ANX.Framework.NonXNA.Reflection
|
|
{
|
|
internal static class AssemblyLoader
|
|
{
|
|
#region Private
|
|
private static List<Assembly> allAssemblies;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
static AssemblyLoader()
|
|
{
|
|
allAssemblies = new List<Assembly>();
|
|
LoadAssembliesFromFile();
|
|
LoadAssembliesFromTypeList();
|
|
}
|
|
#endregion
|
|
|
|
#region GetAllAssemblies
|
|
public static Assembly[] GetAllAssemblies()
|
|
{
|
|
return allAssemblies.ToArray();
|
|
}
|
|
#endregion
|
|
|
|
#region LoadAssembliesFromFile
|
|
private static void LoadAssembliesFromFile()
|
|
{
|
|
#if !ANDROID && !WINDOWSMETRO
|
|
string executingAssemblyFilepath = Assembly.GetExecutingAssembly().Location;
|
|
string basePath = Path.GetDirectoryName(executingAssemblyFilepath);
|
|
|
|
string[] allAssembliesFiles = Directory.GetFiles(basePath, "*.dll",
|
|
SearchOption.TopDirectoryOnly);
|
|
|
|
foreach (string file in allAssembliesFiles)
|
|
{
|
|
if (file.Equals(executingAssemblyFilepath) == false)
|
|
{
|
|
Logger.Info("[ANX] trying to load '" + file + "'...");
|
|
try
|
|
{
|
|
Assembly assembly = Assembly.LoadFrom(file);
|
|
allAssemblies.Add(assembly);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
#endregion
|
|
|
|
#region LoadAssembliesFromTypeList
|
|
private static void LoadAssembliesFromTypeList()
|
|
{
|
|
AssemblyListFile typeListFile = new AssemblyListFile();
|
|
typeListFile.Load();
|
|
|
|
string[] allAssemblyNames = typeListFile.GetAllAssemblyNames();
|
|
foreach (string assemblyName in allAssemblyNames)
|
|
{
|
|
try
|
|
{
|
|
#if WINDOWSMETRO
|
|
Assembly assembly = Assembly.Load(new AssemblyName(assemblyName));
|
|
#else
|
|
Assembly assembly = Assembly.Load(assemblyName);
|
|
#endif
|
|
allAssemblies.Add(assembly);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|