/// <summary>
        /// Adds rule to exclude certain assemblies (that name starts with System or mscorlib)
        /// and not consider their types
        /// </summary>
        /// <returns>Auto registration</returns>
        public static IAutoRegistration ExcludeSystemAssemblies(this IAutoRegistration autoRegistration)
        {
            autoRegistration.ExcludeAssemblies(a => a.GetName().FullName.StartsWith("System") ||
                                               a.GetName().FullName.StartsWith("mscorlib"));

            return(autoRegistration);
        }
 /// <summary>
 /// Loads assemblies from given assembly file name.
 /// </summary>
 /// <param name="autoRegistration">Auto registration.</param>
 /// <param name="assemblyPaths">Assembly paths.</param>
 /// <returns>Auto registration</returns>
 public static IAutoRegistration LoadAssemblyFrom(this IAutoRegistration autoRegistration, IEnumerable <string> assemblyPaths)
 {
     foreach (var assemblyPath in assemblyPaths)
     {
         autoRegistration.LoadAssemblyFrom(assemblyPath);
     }
     return(autoRegistration);
 }
        /// <summary>
        /// Loads all assemblies found in the assembly paths.
        /// </summary>
        /// <param name="autoRegistration">The auto registration.</param>
        /// <param name="assemblyPaths">The paths containing assemblies to load.</param>
        /// <param name="topLevelOnly">if set to <c>true</c> [top level only].</param>
        /// <returns>Auto registration</returns>
        public static IAutoRegistration LoadAllAssemblies(this IAutoRegistration autoRegistration, IEnumerable <string> assemblyPaths, bool topLevelOnly = true)
        {
            foreach (var assemblyPath in assemblyPaths)
            {
                autoRegistration.LoadAllAssemblies(assemblyPath, topLevelOnly);
            }

            return(autoRegistration);
        }
示例#4
0
        /// <summary>
        /// Loads assembly from given assembly file name.
        /// </summary>
        /// <param name="autoRegistration">Auto registration.</param>
        /// <param name="assemblyPath">Assembly path.</param>
        /// <returns>Auto registration</returns>
        public static IAutoRegistration LoadAssemblyFrom(this IAutoRegistration autoRegistration, string assemblyPath)
        {
#if NETSTANDARD1_6
            System.Runtime.Loader.AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath);
#else
            Assembly.LoadFrom(assemblyPath);
#endif
            return(autoRegistration);
        }
 public static IAutoRegistration IncludeWellKnownITypeName <T>(this IAutoRegistration registration, string value)
     where T : LifetimeManager, new()
 {
     Contract.Assert(registration != null);
     registration.Include(
         type => type.ImplementsWellKnownITypeName(value),
         Then.Register().UsingLifetime <T>().AsITypeName());
     return(registration);
 }
        /// <summary>
        /// Loads all assemblies found in the assembly path.
        /// </summary>
        /// <param name="autoRegistration">Auto registration.</param>
        /// <param name="assemblyPath">The path containing assemblies to load.</param>
        /// <param name="topLevelOnly">if set to <c>true</c> [top level only].</param>
        /// <returns>Auto registration</returns>
        public static IAutoRegistration LoadAllAssemblies(this IAutoRegistration autoRegistration, string assemblyPath, bool topLevelOnly = true)
        {
            var searchLevel = topLevelOnly ? SearchOption.TopDirectoryOnly : SearchOption.AllDirectories;
            //var filesToLoad = Directory.EnumerateFiles(assemblyPath, "*", searchLevel) // This is more efficient if using >= .NET 4
            var filesToLoad = Directory.GetFiles(assemblyPath, "*", searchLevel)
                              .WhereHasDotNetAsseblyExtension()
                              .WhereIsDotNetAssembly();

            autoRegistration.LoadAssemblyFrom(filesToLoad);
            return(autoRegistration);
        }
示例#7
0
 public void TestIncludeAssembliesFromCurrentDomain()
 {
     // given
     IAutoRegistration autoRegistration = null;
     using (var dependencyResolver = CreateSubject(
         (_, ar) =>
         {
             // when 
             ar
             .IncludeAssembliesFromCurrentDomain(a => a.FullName.StartsWith("Roham.SmokeTests"))
             .ApplyRegistrations();
             autoRegistration = ar;
         }))
     {
         // then
         Assert.AreEqual(1, autoRegistration.IncludeAssemblies.Count(), "there should be only one assembly included");
         Assert.AreEqual("Roham.SmokeTests.dll", autoRegistration.IncludeAssemblies.Single().ManifestModule.Name, "assembly name is invalid");
     }
 }
示例#8
0
 public void TestIncludeAssembliesFromFiles()
 {
     // given
     var filePath = Assembly.GetExecutingAssembly().Location;
     IAutoRegistration autoRegistration = null;
     using (var dependencyResolver = CreateSubject(
         (_, ar) =>
         {
             // when 
             ar
             .IncludeAssembliesFromFiles(new string[] { filePath })
             .ApplyRegistrations();
             autoRegistration = ar;
         }))
     {
         // then
         Assert.AreEqual(1, autoRegistration.IncludeAssemblies.Count(), "there should be only one assembly included");
         Assert.AreEqual("Roham.SmokeTests.dll", autoRegistration.IncludeAssemblies.Single().ManifestModule.Name, "assembly name is invalid");
     }
 }
示例#9
0
            public void TestIncludeAssembilesFromTypes()
            {
                // given
                IAutoRegistration autoRegistration = null;
                using (var dependencyResolver = CreateSubject(
                    (_, ar) =>
                    {
                        // when 
                        ar
                        .IncludeAssembilesFromTypes(new List<Type> { typeof(IFoo), typeof(IBar) })
                        .ApplyRegistrations();
                        autoRegistration = ar;
                    }))
                {

                    // then
                    Assert.AreEqual(1, autoRegistration.IncludeAssemblies.Count(), "there should be only one assembly included");
                    Assert.AreEqual("Roham.SmokeTests.dll", autoRegistration.IncludeAssemblies.Single().ManifestModule.Name, "assembly name is invalid");
                }
            }
 /// <summary>
 /// Loads assembly from given assembly file name.
 /// </summary>
 /// <param name="autoRegistration">Auto registration.</param>
 /// <param name="assemblyPath">Assembly path.</param>
 /// <returns>Auto registration</returns>
 public static IAutoRegistration LoadAssemblyFrom(this IAutoRegistration autoRegistration, string assemblyPath)
 {
     Assembly.LoadFrom(assemblyPath);
     return(autoRegistration);
 }
 public static IAutoRegistration IncludeWellKnownITypeName(this IAutoRegistration registration, string value)
 {
     return(registration.IncludeWellKnownITypeName <TransientLifetimeManager>(value));
 }