diff options
author | Lluis Sanchez <lluis@xamarin.com> | 2015-10-27 15:13:42 +0300 |
---|---|---|
committer | Lluis Sanchez <lluis@xamarin.com> | 2015-10-27 15:13:42 +0300 |
commit | d7cccc4554ed40c50499ca8e1a2fb052654eb51b (patch) | |
tree | e8c3f6eb32082189585d1f74427ad21d6c456ecd /main/src | |
parent | c3b47b07c814588245aa050bd9f46870a3c93f29 (diff) |
[Core] Fix evaluation of Exists condition
Convert path from msbuild format before checking if it exists.
Also propagate project reference through evaluation contexts.
Fixes bug #35260
Diffstat (limited to 'main/src')
2 files changed, 5 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild.Conditions/ConditionFunctionExpression.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild.Conditions/ConditionFunctionExpression.cs index 196d3ee691..8a9c7f211c 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild.Conditions/ConditionFunctionExpression.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild.Conditions/ConditionFunctionExpression.cs @@ -104,13 +104,12 @@ namespace MonoDevelop.Projects.Formats.MSBuild.Conditions { static bool Exists (string file, IExpressionContext context) { string directory = null; - + if (context.FullFileName != String.Empty) directory = Path.GetDirectoryName (context.FullFileName); - - if (!Path.IsPathRooted (file) && directory != null && directory != String.Empty) - file = Path.Combine (directory, file); - + + file = MSBuildProjectService.FromMSBuildPath (directory, file); + return File.Exists (file) || Directory.Exists (file); } diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildEvaluationContext.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildEvaluationContext.cs index 978bfc1d3e..64c7cb1bd0 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildEvaluationContext.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildEvaluationContext.cs @@ -57,6 +57,7 @@ namespace MonoDevelop.Projects.Formats.MSBuild public MSBuildEvaluationContext (MSBuildEvaluationContext parentContext) { this.parentContext = parentContext; + this.project = parentContext.project; } internal void InitEvaluation (MSBuildProject project) |