From ba6b0e5d9bed69cdbb62cbb3dbc0409edce83567 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Tue, 8 Dec 2015 23:22:08 -0800 Subject: [PATCH] fix dependency version bug --- src/Microsoft.DotNet.ProjectModel/ProjectContext.cs | 1 + .../ProjectContextBuilder.cs | 10 +++++++++- src/Microsoft.DotNet.ProjectModel/ProjectReader.cs | 4 ++-- .../Resolution/ProjectDependencyProvider.cs | 9 ++++++--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs index 0aea353fa..34820e1a8 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContext.cs @@ -95,6 +95,7 @@ namespace Microsoft.DotNet.ProjectModel yield return new ProjectContextBuilder() .WithProject(project) .WithTargetFramework(framework.FrameworkName) + .WithSettings(settings) .Build(); } } diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs index 9200fa167..0b78a9286 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs @@ -37,6 +37,8 @@ namespace Microsoft.DotNet.ProjectModel private Func LockFileResolver { get; set; } + private ProjectReader.Settings Settings { get; set; } + public ProjectContextBuilder() { ProjectResolver = ResolveProject; @@ -109,6 +111,12 @@ namespace Microsoft.DotNet.ProjectModel return this; } + public ProjectContextBuilder WithSettings(ProjectReader.Settings settings) + { + Settings = settings; + return this; + } + public IEnumerable BuildAllTargets() { ProjectDirectory = Project?.ProjectDirectory ?? ProjectDirectory; @@ -165,7 +173,7 @@ namespace Microsoft.DotNet.ProjectModel } var libraries = new Dictionary(); - var projectResolver = new ProjectDependencyProvider(); + var projectResolver = new ProjectDependencyProvider(Settings); var mainProject = projectResolver.GetDescription(TargetFramework, Project); diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectReader.cs b/src/Microsoft.DotNet.ProjectModel/ProjectReader.cs index 8a8d9163c..503a6d520 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectReader.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectReader.cs @@ -21,7 +21,7 @@ namespace Microsoft.DotNet.ProjectModel public string VersionSuffix = null; } - public static bool TryGetProject(string path, out Project project, ICollection diagnostics = null) + public static bool TryGetProject(string path, out Project project, ICollection diagnostics = null, Settings settings = null) { project = null; @@ -55,7 +55,7 @@ namespace Microsoft.DotNet.ProjectModel using (var stream = File.OpenRead(projectPath)) { var reader = new ProjectReader(); - project = reader.ReadProject(stream, projectName, projectPath, diagnostics); + project = reader.ReadProject(stream, projectName, projectPath, diagnostics, settings); } } catch (Exception ex) diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs index 9ace663b9..a0fe1939c 100644 --- a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs +++ b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs @@ -15,15 +15,18 @@ namespace Microsoft.DotNet.ProjectModel.Resolution public class ProjectDependencyProvider { private Func _resolveProject; + private ProjectReader.Settings _settings; - public ProjectDependencyProvider() + public ProjectDependencyProvider(ProjectReader.Settings settings = null) { _resolveProject = ResolveProject; + _settings = settings; } - public ProjectDependencyProvider(Func projectCacheResolver) + public ProjectDependencyProvider(Func projectCacheResolver, ProjectReader.Settings settings = null) { _resolveProject = projectCacheResolver; + _settings = settings; } public ProjectDescription GetDescription(string name, @@ -87,7 +90,7 @@ namespace Microsoft.DotNet.ProjectModel.Resolution private Project ResolveProject(string path) { Project project; - if (ProjectReader.TryGetProject(path, out project)) + if (ProjectReader.TryGetProject(path, out project, settings: _settings)) { return project; }