Skip to content

Commit 8e4445b

Browse files
committed
Merge pull request #919 from scriptcs/dev
merge dev to master
2 parents dca555d + 05ecd18 commit 8e4445b

21 files changed

Lines changed: 208 additions & 212 deletions

build/ScriptCs.Version.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<PropertyGroup>
66
<MajorVersion>0</MajorVersion>
77
<MinorVersion>13</MinorVersion>
8-
<PatchVersion>0</PatchVersion>
8+
<PatchVersion>1</PatchVersion>
99

1010
<!-- Change this to set the build quality of the project. Use values like "alpha", "beta", "rc1", "rtm", etc. -->
1111
<!-- These values are used in SemVer, so make sure to always increase these alphabetically. -->

src/ScriptCs.Core/AppDomainAssemblyResolver.cs

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,19 @@ namespace ScriptCs
99
{
1010
public class AppDomainAssemblyResolver : IAppDomainAssemblyResolver
1111
{
12-
private readonly IDictionary<string, AssemblyInfo> _assemblyInfoMap;
13-
1412
private readonly ILog _logger;
1513
private readonly IFileSystem _fileSystem;
1614
private readonly IAssemblyResolver _resolver;
1715
private readonly IAssemblyUtility _assemblyUtility;
16+
private IDictionary<string, AssemblyInfo> _assemblyInfoMap;
1817

1918
public AppDomainAssemblyResolver(
2019
ILog logger,
2120
IFileSystem fileSystem,
2221
IAssemblyResolver resolver,
2322
IAssemblyUtility assemblyUtility,
2423
IDictionary<string, AssemblyInfo> assemblyInfoMap = null,
25-
Func<object, ResolveEventArgs,
26-
Assembly> resolveHandler = null)
24+
Func<object, ResolveEventArgs, Assembly> resolveHandler = null)
2725
{
2826
_assemblyInfoMap = assemblyInfoMap ?? new Dictionary<string, AssemblyInfo>();
2927
_assemblyUtility = assemblyUtility;
@@ -79,29 +77,36 @@ public virtual void AddAssemblyPaths(IEnumerable<string> assemblyPaths)
7977

8078
foreach (var assemblyPath in assemblyPaths)
8179
{
82-
var info = new AssemblyInfo { Path = assemblyPath };
83-
var name = _assemblyUtility.GetAssemblyName(assemblyPath);
84-
info.Version = name.Version;
80+
if (_assemblyUtility.IsManagedAssembly(assemblyPath))
81+
{
82+
var info = new AssemblyInfo { Path = assemblyPath };
83+
var name = _assemblyUtility.GetAssemblyName(assemblyPath);
84+
info.Version = name.Version;
8585

86-
AssemblyInfo foundInfo;
87-
var found = _assemblyInfoMap.TryGetValue(name.Name, out foundInfo);
86+
AssemblyInfo foundInfo;
87+
var found = _assemblyInfoMap.TryGetValue(name.Name, out foundInfo);
8888

89-
if (!found || foundInfo.Version.CompareTo(info.Version) < 0)
90-
{
91-
// if the assembly being passed is a higher version
92-
// and an assembly with it's name has already been resolved
93-
if (found && foundInfo.Assembly != null)
89+
if (!found || foundInfo.Version.CompareTo(info.Version) < 0)
9490
{
95-
_logger.WarnFormat(
96-
"Conflict: Assembly {0} with version {1} cannot be added as it has already been resolved",
97-
assemblyPath,
98-
info.Version);
99-
100-
continue;
91+
// if the assembly being passed is a higher version
92+
// and an assembly with it's name has already been resolved
93+
if (found && foundInfo.Assembly != null)
94+
{
95+
_logger.WarnFormat(
96+
"Conflict: Assembly {0} with version {1} cannot be added as it has already been resolved",
97+
assemblyPath,
98+
info.Version);
99+
100+
continue;
101+
}
102+
103+
_logger.DebugFormat("Mapping Assembly {0} to version:{1}", name.Name, name.Version);
104+
_assemblyInfoMap[name.Name] = info;
101105
}
102-
103-
_logger.DebugFormat("Mapping Assembly {0} to version:{1}", name.Name, name.Version);
104-
_assemblyInfoMap[name.Name] = info;
106+
}
107+
else
108+
{
109+
_logger.DebugFormat("Skipping Mapping Native Assembly {0}", assemblyPath);
105110
}
106111
}
107112
}

src/ScriptCs.Core/AssemblyResolver.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ private IEnumerable<string> GetPackageAssemblies(string path)
9090
return Enumerable.Empty<string>();
9191
}
9292

93-
var assemblies = _packageAssemblyResolver.GetAssemblyNames(path).ToList();
93+
var assemblies = _packageAssemblyResolver.GetAssemblyNames(path)
94+
.Where(f => _assemblyUtility.IsManagedAssembly(f))
95+
.ToList();
9496

9597
foreach (var packageAssembly in assemblies)
9698
{

src/ScriptCs.Hosting/IInitializationServices.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,7 @@ public interface IInitializationServices
2020
ILog Logger { get; }
2121

2222
IAppDomainAssemblyResolver GetAppDomainAssemblyResolver();
23+
24+
IAssemblyUtility GetAssemblyUtility();
2325
}
2426
}

src/ScriptCs.Hosting/InitializationServices.cs

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ protected override IContainer CreateContainer()
1818
{
1919
var builder = new ContainerBuilder();
2020
this.Logger.Debug("Registering initialization services");
21-
builder.RegisterInstance<ILog>(this.Logger);
21+
builder.RegisterInstance(this.Logger);
2222
builder.RegisterType<ScriptServicesBuilder>().As<IScriptServicesBuilder>();
2323
RegisterOverrideOrDefault<IFileSystem>(builder, b => b.RegisterType<FileSystem>().As<IFileSystem>().SingleInstance());
2424
RegisterOverrideOrDefault<IAssemblyUtility>(builder, b => b.RegisterType<AssemblyUtility>().As<IAssemblyUtility>().SingleInstance());
@@ -36,91 +36,67 @@ protected override IContainer CreateContainer()
3636

3737
public IAssemblyResolver GetAssemblyResolver()
3838
{
39-
if (_assemblyResolver == null)
40-
{
41-
this.Logger.Debug("Resolving AssemblyResolver");
42-
_assemblyResolver = Container.Resolve<IAssemblyResolver>();
43-
}
44-
45-
return _assemblyResolver;
39+
return GetService(ref _assemblyResolver);
4640
}
4741

4842
private IModuleLoader _moduleLoader;
4943

5044
public IModuleLoader GetModuleLoader()
5145
{
52-
if (_moduleLoader == null)
53-
{
54-
this.Logger.Debug("Resolving ModuleLoader");
55-
_moduleLoader = Container.Resolve<IModuleLoader>();
56-
}
57-
58-
return _moduleLoader;
46+
return GetService(ref _moduleLoader);
5947
}
6048

6149
private IFileSystem _fileSystem;
6250

6351
public IFileSystem GetFileSystem()
6452
{
65-
if (_fileSystem == null)
66-
{
67-
this.Logger.Debug("Resolving FileSystem");
68-
_fileSystem = Container.Resolve<IFileSystem>();
69-
}
70-
71-
return _fileSystem;
53+
return GetService(ref _fileSystem);
7254
}
7355

7456
private IInstallationProvider _installationProvider;
7557

7658
public IInstallationProvider GetInstallationProvider()
7759
{
78-
if (_installationProvider == null)
79-
{
80-
this.Logger.Debug("Resolving Installation Provider");
81-
_installationProvider = Container.Resolve<IInstallationProvider>();
82-
}
83-
84-
return _installationProvider;
60+
return GetService(ref _installationProvider);
8561
}
8662

8763
private IPackageAssemblyResolver _packageAssemblyResolver;
8864

8965
public IPackageAssemblyResolver GetPackageAssemblyResolver()
9066
{
91-
if (_packageAssemblyResolver == null)
92-
{
93-
this.Logger.Debug("Resolving Package Assembly Resolver");
94-
_packageAssemblyResolver = Container.Resolve<IPackageAssemblyResolver>();
95-
}
96-
97-
return _packageAssemblyResolver;
67+
return GetService(ref _packageAssemblyResolver);
9868
}
9969

10070
private IPackageInstaller _packageInstaller;
10171

10272
public IPackageInstaller GetPackageInstaller()
10373
{
104-
if (_packageInstaller == null)
105-
{
106-
this.Logger.Debug("Resolving Package Installer");
107-
_packageInstaller = Container.Resolve<IPackageInstaller>();
108-
}
109-
110-
return _packageInstaller;
74+
return GetService(ref _packageInstaller);
11175
}
11276

11377
private IAppDomainAssemblyResolver _appDomainAssemblyResolver;
11478

11579
public IAppDomainAssemblyResolver GetAppDomainAssemblyResolver()
11680
{
117-
if (_appDomainAssemblyResolver == null)
81+
return GetService(ref _appDomainAssemblyResolver);
82+
}
83+
84+
private IAssemblyUtility _assemblyUtility;
85+
86+
public IAssemblyUtility GetAssemblyUtility()
87+
{
88+
return GetService(ref _assemblyUtility);
89+
}
90+
91+
private T GetService<T>(ref T service )
92+
{
93+
if (Equals(service,null))
11894
{
119-
this.Logger.Debug("Resolving App Domain Assembly Resolver");
120-
_appDomainAssemblyResolver = Container.Resolve<IAppDomainAssemblyResolver>();
95+
this.Logger.Debug(string.Format("Resolving {0}", typeof(T).Name));
96+
service = Container.Resolve<T>();
12197
}
12298

123-
return _appDomainAssemblyResolver;
99+
return service;
124100
}
125101
}
126-
}
102+
}

src/ScriptCs.Hosting/ModuleLoader.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,17 @@ private AggregateCatalog CreateAggregateCatalog(List<string> paths)
107107

108108
try
109109
{
110-
var name = _assemblyUtility.GetAssemblyName(path);
111-
var assembly = _assemblyUtility.Load(name);
112-
_addToCatalog(assembly, catalog);
110+
if (_assemblyUtility.IsManagedAssembly(path))
111+
{
112+
_logger.DebugFormat("Adding Assembly: {0} to catalog", path);
113+
var name = _assemblyUtility.GetAssemblyName(path);
114+
var assembly = _assemblyUtility.Load(name);
115+
_addToCatalog(assembly, catalog);
116+
}
117+
else
118+
{
119+
_logger.DebugFormat("Skipping Adding Native Assembly {0} to catalog", path);
120+
}
113121
}
114122
catch (Exception exception)
115123
{

src/ScriptCs.Hosting/RuntimeServices.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ protected override IContainer CreateContainer()
104104

105105
var assemblies = _initializationServices.GetAssemblyResolver()
106106
.GetAssemblyPaths(fileSystem.GetWorkingDirectory(_scriptName))
107-
.Where(assembly => ShouldLoadAssembly(fileSystem, assembly));
107+
.Where(assembly => ShouldLoadAssembly(fileSystem, _initializationServices.GetAssemblyUtility(), assembly));
108108

109109
var aggregateCatalog = new AggregateCatalog();
110110
var assemblyLoadFailures = false;
@@ -149,9 +149,9 @@ protected override IContainer CreateContainer()
149149
}
150150

151151
// HACK: Filter out assemblies in the GAC by checking if full path is specified.
152-
private static bool ShouldLoadAssembly(IFileSystem fileSystem, string assembly)
152+
private static bool ShouldLoadAssembly(IFileSystem fileSystem, IAssemblyUtility assemblyUtility, string assembly)
153153
{
154-
return fileSystem.IsPathRooted(assembly);
154+
return fileSystem.IsPathRooted(assembly) && assemblyUtility.IsManagedAssembly(assembly);
155155
}
156156

157157
private void RegisterLineProcessors(ContainerBuilder builder)

src/ScriptCs/Command/CleanCommand.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,22 @@ internal class CleanCommand : ICleanCommand
1010
private readonly string _scriptName;
1111
private readonly IFileSystem _fileSystem;
1212
private readonly ILog _logger;
13-
private readonly IFileSystemMigrator _fileSystemMigrator;
1413

15-
public CleanCommand(
16-
string scriptName, IFileSystem fileSystem, ILog logger, IFileSystemMigrator fileSystemMigrator)
14+
public CleanCommand(string scriptName, IFileSystem fileSystem, ILog logger)
1715
{
1816
Guard.AgainstNullArgument("fileSystem", fileSystem);
1917
Guard.AgainstNullArgumentProperty("fileSystem", "PackagesFolder", fileSystem.PackagesFolder);
2018
Guard.AgainstNullArgumentProperty("fileSystem", "DllCacheFolder", fileSystem.DllCacheFolder);
2119

2220
Guard.AgainstNullArgument("logger", logger);
2321

24-
Guard.AgainstNullArgument("fileSystemMigrator", fileSystemMigrator);
25-
2622
_scriptName = scriptName;
2723
_fileSystem = fileSystem;
2824
_logger = logger;
29-
_fileSystemMigrator = fileSystemMigrator;
3025
}
3126

3227
public CommandResult Execute()
3328
{
34-
_fileSystemMigrator.Migrate();
35-
3629
_logger.Info("Cleaning initiated...");
3730

3831
var workingDirectory = _fileSystem.GetWorkingDirectory(_scriptName);

0 commit comments

Comments
 (0)