예제 #1
0
        private static IEnumerable <Assembly> LoadAllUnloadedAssemblies(Assembly[] loadedAssemblies)
        {
            if (StackTraceExtensions.ForceUseOfMockResolver())
            {
                return(loadedAssemblies);
            }
            //ncrunch: no coverage start
            var assemblies = new List <Assembly>(loadedAssemblies);
            var dllFiles   = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.dll");

            foreach (var filePath in dllFiles)
            {
                try
                {
                    assemblies = TryLoadAllUnloadedAssemblies(assemblies, filePath);
                }
                catch (Exception ex)
                {
                    Logger.Warning("Failed to load assembly " + filePath + ": " + ex.Message);
                }
            }
            foreach (var assembly in loadedAssemblies)
            {
                if (assembly.IsAllowed() && !AssemblyExtensions.IsPlatformAssembly(assembly.GetName().Name))
                {
                    LoadDependentAssemblies(assembly, assemblies);
                }
            }
            return(assemblies);
        }
예제 #2
0
        private void AddAssemblyIfSampleOrTest(string file)
        {
            if (file.EndsWith(".dll") && !file.Contains(".Tests."))
            {
                return;
            }
            string name = Path.GetFileNameWithoutExtension(file);

            if (!new AssemblyName(name).IsAllowed())
            {
                return;
            }
            if (!AssemblyExtensions.IsManagedAssembly(file))
            {
                return;
            }
            if (AssemblyExtensions.IsPlatformAssembly(name.Replace(".Tests", "")))
            {
                return;
            }
            if (!name.Contains(".") || name.EndsWith(".Tests"))
            {
                Projects.Add(new Project(file));
            }
        }
예제 #3
0
        public void RegisterAllTypesFromAllAssemblies <ContentDataType, UpdateType, DrawType>()
        {
            var assemblies = LoadAllUnloadedAssemblies(AppDomain.CurrentDomain.GetAssemblies());

            foreach (Assembly assembly in assemblies)
            {
                var name = assembly.GetName().Name;
                if (AssemblyExtensions.IsPlatformAssembly(name) || !assembly.IsAllowed() ||
                    name == "DeltaEngine.Graphics" || name == "DeltaEngine.Input" ||
                    //name == "DeltaEngine.Physics2D" || name == "DeltaEngine.Physics3D" ||
                    name == "DeltaEngine.Logging" || name == "DeltaEngine.Networking" ||
                    name.StartsWith("DeltaEngine.Content") && !name.EndsWith(".Tests") ||
                    name.EndsWith(".Mocks"))
                {
                    continue;
                }
                Type[] assemblyTypes = GetAssemblyTypes(assembly);
                if (assemblyTypes == null)
                {
                    continue;                     //ncrunch: no coverage
                }
                RegisterAllTypesInAssembly <ContentDataType>(assemblyTypes, false);
                RegisterAllTypesInAssembly <UpdateType>(assemblyTypes, true);
                RegisterAllTypesInAssembly <DrawType>(assemblyTypes, true);
                resolver.RegisterAllTypesInAssembly(assemblyTypes);
            }
        }
예제 #4
0
        private static bool ShouldLoadTypes(Assembly assembly)
        {
            var name = assembly.GetName().Name;

            return(name == "DeltaEngine" || name.EndsWith("Messages") ||
                   !name.StartsWith("nunit") && !name.EndsWith(".Xml") && assembly.IsAllowed() &&
                   !AssemblyExtensions.IsPlatformAssembly(name) && !AssemblyExtensions.IsEditorAssembly(name));
        }
예제 #5
0
        private static List <Assembly> TryLoadAllUnloadedAssemblies(List <Assembly> assemblies,
                                                                    string filePath)
        {
            string name = Path.GetFileNameWithoutExtension(filePath);

            if (AssemblyExtensions.IsManagedAssembly(filePath) && new AssemblyName(name).IsAllowed() &&
                !AssemblyExtensions.IsPlatformAssembly(name) && !name.EndsWith(".Mocks") &&
                !name.EndsWith(".Tests") && assemblies.All(a => a.GetName().Name != name))
            {
                assemblies.Add(Assembly.LoadFrom(filePath));
            }
            return(assemblies);
        }