Skip to content

Commit

Permalink
(cake-buildGH-3823) Only load valid versioned assmblies
Browse files Browse the repository at this point in the history
  • Loading branch information
devlead committed Apr 2, 2022
1 parent a5f2378 commit 64e9bfa
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/Cake/Infrastructure/Scripting/ReferenceAssemblyResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ namespace Cake.Infrastructure.Scripting
{
public sealed class ReferenceAssemblyResolver : IReferenceAssemblyResolver
{
private static readonly Version VersionZero = new Version(0, 0, 0, 0);
private readonly ICakeLog _log;

public ReferenceAssemblyResolver(ICakeLog log)
Expand Down Expand Up @@ -36,7 +37,7 @@ IEnumerable<Assembly> TryGetReferenceAssemblies()
}
catch (Exception ex)
{
_log.Debug(log => log("Failed to load {0}\r\n{1}", reference.FilePath, ex));
_log.Debug(log => log("Failed to load {0}\r\nException: {1}", reference.FilePath, ex));
continue;
}

Expand All @@ -49,14 +50,20 @@ IEnumerable<Assembly> TryGetReferenceAssemblies()

foreach (var assemblyRefName in assembly.GetReferencedAssemblies())
{
if (assemblyRefName == null ||
assemblyRefName.Version == VersionZero)
{
continue;
}

Assembly assemblyRef;
try
{
assemblyRef = Assembly.Load(assemblyRefName);
}
catch (Exception ex)
{
_log.Debug(log => log("Failed to load {0}\r\n{1}", reference.FilePath, ex));
_log.Debug(log => log("Failed to load {0}\r\nReference: {1}\r\n Exception: {2}", assemblyRefName, assembly, ex));
continue;
}

Expand Down
11 changes: 11 additions & 0 deletions src/Cake/Infrastructure/Scripting/ScriptAssemblyResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ namespace Cake.Infrastructure.Scripting
public sealed class ScriptAssemblyResolver : IDisposable
{
private const string AssemblyResourcesExtension = ".resources";
private static readonly Version VersionZero = new Version(0, 0, 0, 0);

private readonly ICakeEnvironment _environment;
private readonly ICakeLog _log;
Expand Down Expand Up @@ -49,6 +50,11 @@ private Assembly AssemblyResolve(object sender, ResolveEventArgs args)
var shortName = assemblyName.Name;
var version = assemblyName.Version;

if (version == VersionZero)
{
return null;
}

// Preventing indirect recursive calls via Assembly.Load()
if (!_resolvedNames.Add(shortName + version))
{
Expand All @@ -65,6 +71,11 @@ private Assembly AssemblyResolve(AssemblyName assemblyName)
var shortName = assemblyName.Name;
var version = assemblyName.Version;

if (version == VersionZero)
{
return null;
}

Assembly assembly = null;
try
{
Expand Down

0 comments on commit 64e9bfa

Please sign in to comment.