diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs index 0e1ac4c2ad..ccdf51b6ee 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs @@ -1271,7 +1271,7 @@ namespace MonoDevelop.Projects.MSBuild project.Targets.Add (newTarget); } - Dictionary<string, ConditionExpression> conditionCache = new Dictionary<string, ConditionExpression> (); + System.Collections.Immutable.ImmutableDictionary<string, ConditionExpression> conditionCache = System.Collections.Immutable.ImmutableDictionary<string, ConditionExpression>.Empty; bool SafeParseAndEvaluate (ProjectInfo project, MSBuildEvaluationContext context, string condition, bool collectConditionedProperties = false, string customEvalBasePath = null) { try { @@ -1281,11 +1281,10 @@ namespace MonoDevelop.Projects.MSBuild context.CustomFullDirectoryName = customEvalBasePath; try { - ConditionExpression ce; - lock (conditionCache) {
- if (!conditionCache.TryGetValue (condition, out ce))
- ce = ConditionParser.ParseCondition (condition);
- conditionCache [condition] = ce; + ConditionExpression ce;
+ if (!conditionCache.TryGetValue (condition, out ce)) {
+ ce = ConditionParser.ParseCondition (condition); + conditionCache = conditionCache.SetItem (condition, ce); } if (collectConditionedProperties) |