diff --git a/ScriptCs.sln.DotSettings b/ScriptCs.sln.DotSettings new file mode 100644 index 00000000..993cd6d0 --- /dev/null +++ b/ScriptCs.sln.DotSettings @@ -0,0 +1,2 @@ + + <Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /> \ No newline at end of file diff --git a/src/ScriptCs.Contracts/IAppDomainAssemblyResolver.cs b/src/ScriptCs.Contracts/IAppDomainAssemblyResolver.cs index 5954da70..ff805473 100644 --- a/src/ScriptCs.Contracts/IAppDomainAssemblyResolver.cs +++ b/src/ScriptCs.Contracts/IAppDomainAssemblyResolver.cs @@ -4,7 +4,6 @@ namespace ScriptCs.Contracts { public interface IAppDomainAssemblyResolver { - void AddAssemblyPaths(IEnumerable assemblyPaths); void Initialize(); } } \ No newline at end of file diff --git a/src/ScriptCs.Core/AppDomainAssemblyResolver.cs b/src/ScriptCs.Core/AppDomainAssemblyResolver.cs index b5c48247..82580d23 100644 --- a/src/ScriptCs.Core/AppDomainAssemblyResolver.cs +++ b/src/ScriptCs.Core/AppDomainAssemblyResolver.cs @@ -13,7 +13,7 @@ public class AppDomainAssemblyResolver : IAppDomainAssemblyResolver private readonly IFileSystem _fileSystem; private readonly IAssemblyResolver _resolver; private readonly IAssemblyUtility _assemblyUtility; - private IDictionary _assemblyInfoMap; + private readonly IDictionary _assemblyInfoMap; public AppDomainAssemblyResolver( ILog logger, diff --git a/src/ScriptCs.Core/AssemblyResolver.cs b/src/ScriptCs.Core/AssemblyResolver.cs index ec7bea57..a129deac 100644 --- a/src/ScriptCs.Core/AssemblyResolver.cs +++ b/src/ScriptCs.Core/AssemblyResolver.cs @@ -2,9 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Reflection.Emit; using Common.Logging; - using ScriptCs.Contracts; namespace ScriptCs @@ -12,7 +10,7 @@ namespace ScriptCs public class AssemblyResolver : IAssemblyResolver { private readonly Dictionary> _assemblyPathCache = new Dictionary>(); - + private readonly IFileSystem _fileSystem; private readonly IPackageAssemblyResolver _packageAssemblyResolver; @@ -62,7 +60,7 @@ public IEnumerable GetAssemblyPaths(string path, bool binariesOnly = fal return assemblies; } - public IEnumerable GetBinAssemblyPaths(string path) + private IEnumerable GetBinAssemblyPaths(string path) { var binFolder = Path.Combine(path, _fileSystem.BinFolder); if (!_fileSystem.DirectoryExists(binFolder)) diff --git a/src/ScriptCs.Hosting/ModuleLoader.cs b/src/ScriptCs.Hosting/ModuleLoader.cs index efe98773..c6ff0c1e 100644 --- a/src/ScriptCs.Hosting/ModuleLoader.cs +++ b/src/ScriptCs.Hosting/ModuleLoader.cs @@ -5,8 +5,6 @@ using System.IO; using System.Linq; using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; using Common.Logging; using ScriptCs.Contracts; @@ -23,8 +21,8 @@ public class ModuleLoader : IModuleLoader [ImportingConstructor] public ModuleLoader(IAssemblyResolver resolver, ILog logger, IFileSystem fileSystem, IAssemblyUtility assemblyUtility) : - this(resolver, logger, null, null, fileSystem, assemblyUtility ) - { + this(resolver, logger, null, null, fileSystem, assemblyUtility) + { } public ModuleLoader(IAssemblyResolver resolver, ILog logger, Action addToCatalog, Func>> getLazyModules, IFileSystem fileSystem, IAssemblyUtility assemblyUtility) @@ -41,7 +39,7 @@ public ModuleLoader(IAssemblyResolver resolver, ILog logger, Action - { - return container.GetExports(); - }; + getLazyModules = container => container.GetExports(); } + _getLazyModules = getLazyModules; _fileSystem = fileSystem; _assemblyUtility = assemblyUtility; @@ -78,13 +74,17 @@ public void Load(IModuleConfiguration config, string[] modulePackagesPaths, stri InitializeModules(config, extension, moduleNames, lazyModules); } - private void InitializeModules(IModuleConfiguration config, string extension, string[] moduleNames, + private void InitializeModules( + IModuleConfiguration config, + string extension, + IEnumerable moduleNames, IEnumerable> lazyModules) { var modules = lazyModules .Where(m => moduleNames.Contains(m.Metadata.Name) || (extension != null && m.Metadata.Extensions != null && - (m.Metadata.Extensions.Split(',').Contains(extension))) || m.Metadata.Autoload == true) + (m.Metadata.Extensions.Split(',').Contains(extension))) || + m.Metadata.Autoload) .Select(m => m.Value); _logger.Debug("Initializing modules"); @@ -98,7 +98,7 @@ private void InitializeModules(IModuleConfiguration config, string extension, st _logger.Debug("Modules initialized"); } - private AggregateCatalog CreateAggregateCatalog(List paths) + private AggregateCatalog CreateAggregateCatalog(IEnumerable paths) { var catalog = new AggregateCatalog(); foreach (var path in paths) @@ -127,27 +127,24 @@ private AggregateCatalog CreateAggregateCatalog(List paths) return catalog; } - private void AddPaths(string[] modulePackagesPaths, string hostBin, List paths) + private void AddPaths(IEnumerable modulePackagesPaths, string hostBin, List paths) { - foreach (var modulePackagesPath in modulePackagesPaths) + foreach (var modulePaths in modulePackagesPaths + .Select(modulePackagesPath => _resolver.GetAssemblyPaths(modulePackagesPath, true))) { - var modulePaths = _resolver.GetAssemblyPaths(modulePackagesPath, true); paths.AddRange(modulePaths); } if (hostBin != null) { var assemblyPaths = _fileSystem.EnumerateBinaries(hostBin, SearchOption.TopDirectoryOnly); - foreach (var path in assemblyPaths) - { - paths.Add(path); - } + paths.AddRange(assemblyPaths); } } private IEnumerable> GetLazyModules(CompositionContainer container) { - IEnumerable> lazyModules = null; + IEnumerable> lazyModules; try { @@ -166,8 +163,10 @@ private IEnumerable> GetLazyModules(CompositionCo { _logger.DebugFormat("Module Loader exception: {0}", exception.Message); } + lazyModules = Enumerable.Empty>(); } + return lazyModules; } } diff --git a/test/ScriptCs.Core.Tests/AssemblyResolverTests.cs b/test/ScriptCs.Core.Tests/AssemblyResolverTests.cs index 777dfcb5..088af58f 100644 --- a/test/ScriptCs.Core.Tests/AssemblyResolverTests.cs +++ b/test/ScriptCs.Core.Tests/AssemblyResolverTests.cs @@ -110,7 +110,7 @@ public void ShouldOnlyReturnBinariesWhenFlagIsSet( AssemblyResolver resolver) { const string WorkingDirectory = @"C:\"; - + var binFolder = Path.Combine(WorkingDirectory, "bin"); assemblyUtilityMock.Setup(a => a.IsManagedAssembly(It.IsAny())).Returns(true);