Ensure Microsoft.CSharp reference is not duplicated
This commit is contained in:
parent
14e8b184bd
commit
268dd603cc
4 changed files with 53 additions and 9 deletions
|
@ -0,0 +1,10 @@
|
|||
namespace TestMicrosoftCSharpReference
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static int Main(string[] args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"version": "1.0.0",
|
||||
"dependencies": { },
|
||||
"frameworks": {
|
||||
"dnxcore50": {
|
||||
"dependencies": {
|
||||
"NETStandard.Library": "1.0.0-rc2-23811"
|
||||
}
|
||||
},
|
||||
"dnx451": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.0.1-*"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -44,7 +44,10 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
|||
{
|
||||
// This never returns null
|
||||
var targetFrameworkInfo = project.GetTargetFramework(targetFramework);
|
||||
var dependencies = new List<LibraryRange>(targetFrameworkInfo.Dependencies);
|
||||
var dependencies = new List<LibraryRange>(targetFrameworkInfo.Dependencies);
|
||||
|
||||
// Add all of the project's dependencies
|
||||
dependencies.AddRange(project.Dependencies);
|
||||
|
||||
if (targetFramework != null && targetFramework.IsDesktop())
|
||||
{
|
||||
|
@ -58,13 +61,13 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
|||
|
||||
if (targetFramework.Version >= new Version(4, 0))
|
||||
{
|
||||
dependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
||||
if (!dependencies.Any(dep => string.Equals(dep.Name, "Microsoft.CSharp", StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
dependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add all of the project's dependencies
|
||||
dependencies.AddRange(project.Dependencies);
|
||||
|
||||
if (targetLibrary != null)
|
||||
{
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.DotNet.ProjectModel.Graph;
|
||||
using Microsoft.DotNet.ProjectModel.Resolution;
|
||||
using Microsoft.DotNet.TestFramework;
|
||||
using Microsoft.DotNet.Tools.Test.Utilities;
|
||||
using NuGet.Frameworks;
|
||||
using NuGet.Versioning;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.DotNet.ProjectModel.Tests
|
||||
{
|
||||
public class PackageDependencyProviderTests
|
||||
public class PackageDependencyProviderTests : TestBase
|
||||
{
|
||||
[Fact]
|
||||
public void GetDescriptionShouldNotModifyTarget()
|
||||
|
@ -36,9 +37,23 @@ namespace Microsoft.DotNet.ProjectModel.Tests
|
|||
|
||||
Assert.Empty(p1.CompileTimeAssemblies);
|
||||
Assert.Empty(p1.RuntimeAssemblies);
|
||||
|
||||
|
||||
Assert.Empty(p2.CompileTimeAssemblies);
|
||||
Assert.Empty(p2.RuntimeAssemblies);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SingleMicrosoftCSharpReference()
|
||||
{
|
||||
// https://github.com/dotnet/cli/issues/1602
|
||||
var instance = TestAssetsManager.CreateTestInstance("TestMicrosoftCSharpReference")
|
||||
.WithLockFiles();
|
||||
|
||||
var context = new ProjectContextBuilder().WithProjectDirectory(instance.TestRoot)
|
||||
.WithTargetFramework("dnx451")
|
||||
.Build();
|
||||
|
||||
Assert.Equal(4, context.RootProject.Dependencies.Count());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue