diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs index cacd22cc1..6872dbcd4 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs @@ -88,6 +88,13 @@ namespace Microsoft.DotNet.ProjectModel.Graph return true; } - private string RenderDependency(LibraryRange arg) => $"{arg.Name} {VersionUtility.RenderVersion(arg.VersionRange)}"; + private string RenderDependency(LibraryRange arg) + { + if (arg.Target == LibraryType.Project && arg.VersionRange == null) + { + return arg.Name; + } + return $"{arg.Name} {VersionUtility.RenderVersion(arg.VersionRange)}"; + } } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs index bb4a8bbfe..61e95fa38 100644 --- a/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs +++ b/src/Microsoft.DotNet.ProjectModel/ProjectContextBuilder.cs @@ -175,7 +175,7 @@ namespace Microsoft.DotNet.ProjectModel var libraries = new Dictionary(); var projectResolver = new ProjectDependencyProvider(ProjectResolver); - var mainProject = projectResolver.GetDescription(TargetFramework, Project); + var mainProject = projectResolver.GetDescription(TargetFramework, Project, targetLibrary: null); // Add the main project libraries.Add(new LibraryKey(mainProject.Identity.Name), mainProject); diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs index e5c40d791..d809b8343 100644 --- a/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs +++ b/src/Microsoft.DotNet.ProjectModel/Resolution/ProjectDependencyProvider.cs @@ -27,7 +27,7 @@ namespace Microsoft.DotNet.ProjectModel.Resolution var project = _resolveProject(Path.GetDirectoryName(path)); if (project != null) { - return GetDescription(targetLibrary.TargetFramework, project); + return GetDescription(targetLibrary.TargetFramework, project, targetLibrary); } else { @@ -40,30 +40,40 @@ namespace Microsoft.DotNet.ProjectModel.Resolution return GetDescription(name, path, targetLibrary, projectCacheResolver: null); } - public ProjectDescription GetDescription(NuGetFramework targetFramework, Project project) + public ProjectDescription GetDescription(NuGetFramework targetFramework, Project project, LockFileTargetLibrary targetLibrary) { // This never returns null var targetFrameworkInfo = project.GetTargetFramework(targetFramework); - var targetFrameworkDependencies = new List(targetFrameworkInfo.Dependencies); + var dependencies = new List(targetFrameworkInfo.Dependencies); if (targetFramework != null && targetFramework.IsDesktop()) { - targetFrameworkDependencies.Add(new LibraryRange("mscorlib", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); + dependencies.Add(new LibraryRange("mscorlib", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); - targetFrameworkDependencies.Add(new LibraryRange("System", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); + dependencies.Add(new LibraryRange("System", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); if (targetFramework.Version >= new Version(3, 5)) { - targetFrameworkDependencies.Add(new LibraryRange("System.Core", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); + dependencies.Add(new LibraryRange("System.Core", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); if (targetFramework.Version >= new Version(4, 0)) { - targetFrameworkDependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); + dependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build)); } } } - var dependencies = project.Dependencies.Concat(targetFrameworkDependencies).ToList(); + // Add all of the project's dependencies + dependencies.AddRange(project.Dependencies); + + if (targetLibrary != null) + { + // The lock file entry might have a filtered set of dependencies + var lockFileDependencies = targetLibrary.Dependencies.ToDictionary(d => d.Id); + + // Remove all non-framework dependencies that don't appear in the lock file entry + dependencies.RemoveAll(m => !lockFileDependencies.ContainsKey(m.Name) && m.Target != LibraryType.ReferenceAssembly); + } // Mark the library as unresolved if there were specified frameworks // and none of them resolved diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index 54b6b53eb..9be87598f 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -6,7 +6,7 @@ "description": "Types to model a .NET Project", "dependencies": { "System.Reflection.Metadata": "1.2.0-rc3-23811", - "NuGet.Packaging": "3.4.0-beta-583", + "NuGet.Packaging": "3.4.0-beta-625", "Microsoft.Extensions.FileSystemGlobbing": "1.0.0-rc2-15996", "Microsoft.Extensions.JsonParser.Sources": { "type": "build", diff --git a/src/dotnet/project.json b/src/dotnet/project.json index dea5d0a72..00879f0be 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -24,7 +24,7 @@ "Microsoft.CodeAnalysis.CSharp": "1.2.0-beta1-20160202-02", "Microsoft.DiaSymReader.Native": "1.3.3", - "NuGet.CommandLine.XPlat": "3.4.0-beta-583", + "NuGet.CommandLine.XPlat": "3.4.0-beta-625", "System.CommandLine": "0.1.0-e160119-1", "Microsoft.DotNet.ProjectModel": "1.0.0-*", @@ -47,10 +47,7 @@ "version": "1.0.0-rc2-16453", "type": "build" }, - "Microsoft.Extensions.Testing.Abstractions": { - "version": "1.0.0-*", - "type": "build" - }, + "Microsoft.Extensions.Testing.Abstractions": "1.0.0-*", "Microsoft.NETCore.ConsoleHost": "1.0.0-rc2-23811", "Microsoft.NETCore.TestHost": "1.0.0-rc2-23811", "NETStandard.Library": "1.0.0-rc2-23811", diff --git a/test/dotnet-build.Tests/project.json b/test/dotnet-build.Tests/project.json index 932c8c650..a267044e5 100644 --- a/test/dotnet-build.Tests/project.json +++ b/test/dotnet-build.Tests/project.json @@ -6,8 +6,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, "Microsoft.DotNet.Cli.Utils": { - "target": "project", - "type": "build" + "target": "project" }, "xunit": "2.1.0", diff --git a/test/dotnet-compile.Tests/project.json b/test/dotnet-compile.Tests/project.json index a3c36b599..a7a1eb256 100644 --- a/test/dotnet-compile.Tests/project.json +++ b/test/dotnet-compile.Tests/project.json @@ -6,8 +6,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, "Microsoft.DotNet.Cli.Utils": { - "target": "project", - "type": "build" + "target": "project" }, "xunit": "2.1.0", diff --git a/test/dotnet-compile.UnitTests/project.json b/test/dotnet-compile.UnitTests/project.json index 3ecadbe2d..666a1b55b 100644 --- a/test/dotnet-compile.UnitTests/project.json +++ b/test/dotnet-compile.UnitTests/project.json @@ -5,8 +5,7 @@ "NETStandard.Library": "1.0.0-rc2-23811", "Microsoft.DotNet.Cli.Utils": { - "target": "project", - "type": "build" + "target": "project" }, "dotnet": { "target": "project" }, diff --git a/test/dotnet-publish.Tests/project.json b/test/dotnet-publish.Tests/project.json index 75ab3dd6b..280f9613c 100644 --- a/test/dotnet-publish.Tests/project.json +++ b/test/dotnet-publish.Tests/project.json @@ -6,8 +6,7 @@ "Microsoft.DotNet.Tools.Tests.Utilities": { "target": "project" }, "Microsoft.DotNet.Cli.Utils": { - "target": "project", - "type": "build" + "target": "project" }, "xunit": "2.1.0",