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); }
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)); } }
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); } }
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)); }
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); }