public AssemblyInterfaceData(IAssemblyWrapper assemblyToAnalyze)
        {
            Assembly = assemblyToAnalyze;

            Name = Assembly.GetName().Name;
            Version = "v" + Assembly.GetName().Version;
            CLRVersion = Assembly.ImageRuntimeVersion;

            ReferencedAssemblies = Assembly.GetReferencedAssemblies().Select(x => x.FullName).ToList();

            var types = Assembly.GetTypes();

            foreach (var type in types)
            {
                var typeEnumValue = GetTypeEnumValueForType(type);
                switch (typeEnumValue)
                {
                    case TypeEnum.Class:
                        Classes.Add(new ClassTypeData(type));
                        break;
                    case TypeEnum.Interface:
                        Interfaces.Add(new InterfaceTypeData(type));
                        break;
                    case TypeEnum.Enum:
                        Enums.Add(new EnumTypeData(type));
                        break;
                    case TypeEnum.Struct:
                        Structs.Add(new StructTypeData(type));
                        break;
                }
            }

            Classes = Classes.OrderBy(x => x.Name).ToList();
            Interfaces = Interfaces.OrderBy(x => x.Name).ToList();
            Enums = Enums.OrderBy(x => x.Name).ToList();
            Structs = Structs.OrderBy(x => x.Name).ToList();
        }
Esempio n. 2
0
		protected virtual void HotReplaceAssembly(IAssemblyWrapper wrapper, MemoryStream stream)
		{
		}
Esempio n. 3
0
 protected virtual void HotReplaceAssembly(IAssemblyWrapper wrapper, MemoryStream stream)
 {
 }
Esempio n. 4
0
 public AssemblyLoader(IAssemblyWrapper assemblyWrapper)
 {
     _assemblyWrapper = assemblyWrapper;
 }
Esempio n. 5
0
 public PluginHandler(IReporter reporter, IFileSystem fileSystem, IAssemblyWrapper assemblyWrapper)
 {
     _reporter        = reporter;
     _fileSystem      = fileSystem;
     _assemblyWrapper = assemblyWrapper;
 }
Esempio n. 6
0
		protected override void HotReplaceAssembly(IAssemblyWrapper wrapper, MemoryStream stream)
		{
			var ilspyWrapper = wrapper as ILSpyAssemblyWrapper;
			if (ilspyWrapper == null)
				return;

			var loadedAssembly = ilspyWrapper.LoadedAssembly;
			if (loadedAssembly == null)
				return;

			loadedAssembly.AssemblyList.HotReplaceAssembly(loadedAssembly.FileName, stream);
		}
Esempio n. 7
0
 private static IReadOnlyCollection <Type> SearchCompositionRootTypes(IAssemblyWrapper assembly)
 {
     return(assembly.Types.Where(t => t.IsImplements <ICompositionRoot>()).ToList());
 }
Esempio n. 8
0
        public AssemblyLoader(string runnerBasePath, IAssemblyWrapper assemblyWrapper, IFileWrapper fileWrapper,
                              IEnumerable <string> assemblyLocations)
        {
            AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
            {
                var logger = LogManager.GetLogger("AssemblyLoader");
                logger.Debug("Loading {0}", args.Name);
                try
                {
                    var assemblyName = args.Name.Split(',').FirstOrDefault();
                    var gaugeBinDir  = AssemblyLocater.GetGaugeBinDir();

                    var probePath = Path.GetFullPath(Path.Combine(gaugeBinDir, string.Format("{0}.dll", assemblyName)));
                    if (File.Exists(probePath))
                    {
                        return(Assembly.LoadFrom(probePath));
                    }

                    probePath = Path.GetFullPath(Path.Combine(runnerBasePath, string.Format("{0}.dll", assemblyName)));

                    if (File.Exists(probePath))
                    {
                        return(Assembly.LoadFrom(probePath));
                    }

                    var executingAssembly = Assembly.GetExecutingAssembly();
                    return(executingAssembly.GetName().Name == assemblyName ? executingAssembly : null);
                }
                catch (Exception e)
                {
                    logger.Error(e);
                    return(null);
                }
            };
            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += (sender, args) =>
            {
                var logger = LogManager.GetLogger("AssemblyLoader");
                logger.Debug("Reflection only Loading {0}", args.Name);
                try
                {
                    var assemblyName = args.Name.Split(',').FirstOrDefault();
                    var gaugeBinDir  = AssemblyLocater.GetGaugeBinDir();

                    var probePath = Path.GetFullPath(Path.Combine(gaugeBinDir, string.Format("{0}.dll", assemblyName)));
                    if (File.Exists(probePath))
                    {
                        return(Assembly.ReflectionOnlyLoadFrom(probePath));
                    }

                    probePath = Path.GetFullPath(Path.Combine(runnerBasePath, string.Format("{0}.dll", assemblyName)));

                    return(File.Exists(probePath) ? Assembly.ReflectionOnlyLoadFrom(probePath) : null);
                }
                catch (Exception e)
                {
                    logger.Error(e);
                    return(null);
                }
            };
            _assemblyWrapper = assemblyWrapper;
            _fileWrapper     = fileWrapper;
            LoadTargetLibAssembly();
            AssembliesReferencingGaugeLib = new List <Assembly>();
            ScreengrabberTypes            = new List <Type>();
            ClassInstanceManagerTypes     = new List <Type>();
            foreach (var location in assemblyLocations)
            {
                ScanAndLoad(location);
            }
        }
Esempio n. 9
0
 public PluginHandler(IReporter reporter, IFileSystem fileSystem, IAssemblyWrapper assemblyWrapper)
 {
     this.reporter        = reporter;
     this.fileSystem      = fileSystem;
     this.assemblyWrapper = assemblyWrapper;
 }