Skip to content

Commit 7e44aa0

Browse files
committed
Merge branch 'hotfix/0.27.1' into main
* hotfix/0.27.1: (build) Updated version and release notes Prevent recursion in the assembly resolver (#2132)
2 parents 41a6071 + 6f9cc56 commit 7e44aa0

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

ReleaseNotes.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
### New in 0.27.1 (Released 2018/04/21)
2+
3+
* 2132 Problems with loading certain assemblies (0.27.0)
4+
15
### New in 0.27.0 (Released 2018/04/19)
26

7+
38
* 2078 Support expand environment variables in script pre-processor directives
49
* 2047 Specify version during Nuget Updating
510
* 2005 Add entries for Setup/Teardown in report

src/Cake/Scripting/Roslyn/ScriptAssemblyResolver.cs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6+
using System.Collections.Generic;
67
using System.Linq;
78
using System.Reflection;
89
using Cake.Core.Diagnostics;
@@ -12,6 +13,7 @@ namespace Cake.Scripting.Roslyn
1213
internal sealed class ScriptAssemblyResolver : IDisposable
1314
{
1415
private readonly ICakeLog _log;
16+
private readonly HashSet<string> _resolvedNames = new HashSet<string>();
1517

1618
public ScriptAssemblyResolver(ICakeLog log)
1719
{
@@ -27,19 +29,25 @@ public void Dispose()
2729
private Assembly AssemblyResolve(object sender, ResolveEventArgs args)
2830
{
2931
var name = new AssemblyName(args.Name);
30-
_log.Verbose($"Resolving assembly {args.Name}");
31-
var assembly = AppDomain.CurrentDomain.GetAssemblies()
32-
.FirstOrDefault(x => !x.IsDynamic && x.GetName().Name == name.Name)
33-
?? Assembly.Load(name.Name);
34-
if (assembly != null)
35-
{
36-
_log.Verbose($"Resolved by assembly {assembly.FullName}");
37-
}
38-
else
32+
33+
// Prevent recursion from the Assembly.Load() call inside
34+
if (_resolvedNames.Add(name.Name))
3935
{
40-
_log.Verbose($"Assembly not resolved");
36+
_log.Verbose($"Resolving assembly {args.Name}");
37+
var assembly = AppDomain.CurrentDomain.GetAssemblies()
38+
.FirstOrDefault(x => !x.IsDynamic && x.GetName().Name == name.Name)
39+
?? Assembly.Load(name.Name);
40+
if (assembly != null)
41+
{
42+
_log.Verbose($"Resolved by assembly {assembly.FullName}");
43+
}
44+
else
45+
{
46+
_log.Verbose($"Assembly not resolved");
47+
}
48+
return assembly;
4149
}
42-
return assembly;
50+
return null;
4351
}
4452
}
4553
}

src/SolutionInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using System.Reflection;
1111

1212
[assembly: AssemblyProduct("Cake")]
13-
[assembly: AssemblyVersion("0.27.0.0")]
14-
[assembly: AssemblyFileVersion("0.27.0.0")]
15-
[assembly: AssemblyInformationalVersion("0.27.0-beta.1+0.Branch.release/0.27.0.Sha.67466468cec2e01e01ffa8d959aac168bb60762b")]
13+
[assembly: AssemblyVersion("0.27.1.0")]
14+
[assembly: AssemblyFileVersion("0.27.1.0")]
15+
[assembly: AssemblyInformationalVersion("0.27.1-beta.1+0.Branch.release/0.27.1.Sha.645ee5a6ca687c8da4d1ccba4a866101ae546022")]
1616
[assembly: AssemblyCopyright("Copyright (c) .NET Foundation and Contributors")]

0 commit comments

Comments
 (0)