Skip to content

Commit 2ad023e

Browse files
committed
Be sure to call MSBuildLocator.RegisterDefaults only once
1 parent fcb1d9e commit 2ad023e

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Linq;
44
using System.Text;
55
using System.Threading.Tasks;
6-
using Microsoft.Build.Locator;
76
using Nerdbank.GitVersioning.Tasks;
87
using Xunit;
98

@@ -13,7 +12,7 @@ public class AssemblyInfoTest
1312
{
1413
public AssemblyInfoTest()
1514
{
16-
MSBuildLocator.RegisterDefaults();
15+
MSBuildExtensions.LoadMSBuild();
1716
}
1817

1918
[Fact]

src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
using Microsoft.Build.Evaluation;
1515
using Microsoft.Build.Execution;
1616
using Microsoft.Build.Framework;
17-
using Microsoft.Build.Locator;
1817
using Microsoft.CodeAnalysis;
1918
using Microsoft.CodeAnalysis.CSharp;
2019
using Microsoft.CodeAnalysis.CSharp.Syntax;
@@ -47,14 +46,10 @@ public class BuildIntegrationTests : RepoTestBase
4746
};
4847
private Random random;
4948

50-
static BuildIntegrationTests()
51-
{
52-
MSBuildLocator.RegisterDefaults();
53-
}
54-
5549
public BuildIntegrationTests(ITestOutputHelper logger)
5650
: base(logger)
5751
{
52+
MSBuildExtensions.LoadMSBuild();
5853

5954
int seed = (int)DateTime.Now.Ticks;
6055
this.random = new Random(seed);

src/NerdBank.GitVersioning.Tests/MSBuildExtensions.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,28 @@
77
using Microsoft.Build.Evaluation;
88
using Microsoft.Build.Execution;
99
using Microsoft.Build.Framework;
10+
using Microsoft.Build.Locator;
1011
using Microsoft.Build.Logging;
1112
using Validation;
1213
using Xunit.Abstractions;
1314

1415
internal static class MSBuildExtensions
1516
{
17+
private static object loadLock = new object();
18+
private static bool loaded = false;
19+
20+
internal static void LoadMSBuild()
21+
{
22+
lock (loadLock)
23+
{
24+
if (!loaded)
25+
{
26+
MSBuildLocator.RegisterDefaults();
27+
loaded = true;
28+
}
29+
}
30+
}
31+
1632
internal static async Task<BuildResult> BuildAsync(this BuildManager buildManager, ITestOutputHelper logger, ProjectCollection projectCollection, ProjectRootElement project, string target, IDictionary<string, string> globalProperties = null, LoggerVerbosity logVerbosity = LoggerVerbosity.Detailed, ILogger[] additionalLoggers = null)
1733
{
1834
Requires.NotNull(buildManager, nameof(buildManager));

0 commit comments

Comments
 (0)