Merge pull request #2363 from dotnet/troy/2344
Stop adding default desktop assembly reference repeatedly.
This commit is contained in:
commit
3d157d0ec8
8 changed files with 105 additions and 18 deletions
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net45": {
|
||||||
|
"frameworkAssemblies": {
|
||||||
|
"mscorlib": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
"NETStandard.Library": "1.5.0-rc2-24008"
|
"NETStandard.Library": "1.5.0-rc2-24008"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dnx451": {
|
"net451": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.CSharp": "4.0.1-rc2-24008"
|
"Microsoft.CSharp": "4.0.1-rc2-24008"
|
||||||
}
|
}
|
||||||
|
|
16
TestAssets/TestProjects/TestMscorlibReference/project.json
Normal file
16
TestAssets/TestProjects/TestMscorlibReference/project.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"dependencies": {},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandardapp1.5": {
|
||||||
|
"dependencies": {
|
||||||
|
"NETStandard.Library": "1.5.0-rc2-24008"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"net451": {
|
||||||
|
"frameworkAssemblies": {
|
||||||
|
"mscorlib": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
16
TestAssets/TestProjects/TestSystemCoreReference/project.json
Normal file
16
TestAssets/TestProjects/TestSystemCoreReference/project.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"dependencies": {},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandardapp1.5": {
|
||||||
|
"dependencies": {
|
||||||
|
"NETStandard.Library": "1.5.0-rc2-24008"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"net451": {
|
||||||
|
"frameworkAssemblies": {
|
||||||
|
"System": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
16
TestAssets/TestProjects/TestSystemReference/project.json
Normal file
16
TestAssets/TestProjects/TestSystemReference/project.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"dependencies": {},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandardapp1.5": {
|
||||||
|
"dependencies": {
|
||||||
|
"NETStandard.Library": "1.5.0-rc2-24008"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"net451": {
|
||||||
|
"frameworkAssemblies": {
|
||||||
|
"System.Core": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -51,20 +51,15 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
|
|
||||||
if (targetFramework != null && targetFramework.IsDesktop())
|
if (targetFramework != null && targetFramework.IsDesktop())
|
||||||
{
|
{
|
||||||
dependencies.Add(new LibraryRange("mscorlib", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
AddIfMissing(dependencies, "mscorlib");
|
||||||
|
AddIfMissing(dependencies, "System");
|
||||||
dependencies.Add(new LibraryRange("System", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
|
||||||
|
|
||||||
if (targetFramework.Version >= new Version(3, 5))
|
if (targetFramework.Version >= new Version(3, 5))
|
||||||
{
|
{
|
||||||
dependencies.Add(new LibraryRange("System.Core", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
AddIfMissing(dependencies, "System.Core");
|
||||||
|
|
||||||
if (targetFramework.Version >= new Version(4, 0))
|
if (targetFramework.Version >= new Version(4, 0))
|
||||||
{
|
{
|
||||||
if (!dependencies.Any(dep => string.Equals(dep.Name, "Microsoft.CSharp", StringComparison.OrdinalIgnoreCase)))
|
AddIfMissing(dependencies, "Microsoft.CSharp");
|
||||||
{
|
|
||||||
dependencies.Add(new LibraryRange("Microsoft.CSharp", LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,5 +84,13 @@ namespace Microsoft.DotNet.ProjectModel.Resolution
|
||||||
targetFrameworkInfo,
|
targetFrameworkInfo,
|
||||||
!unresolved);
|
!unresolved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void AddIfMissing(List<LibraryRange> dependencies, string dependencyName)
|
||||||
|
{
|
||||||
|
if (!dependencies.Any(dep => string.Equals(dep.Name, dependencyName, StringComparison.OrdinalIgnoreCase)))
|
||||||
|
{
|
||||||
|
dependencies.Add(new LibraryRange(dependencyName, LibraryType.ReferenceAssembly, LibraryDependencyType.Build));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,15 +42,25 @@ namespace Microsoft.DotNet.ProjectModel.Tests
|
||||||
Assert.Empty(p2.RuntimeAssemblies);
|
Assert.Empty(p2.RuntimeAssemblies);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Theory]
|
||||||
public void SingleMicrosoftCSharpReference()
|
[InlineDataAttribute("TestMscorlibReference", true)]
|
||||||
|
[InlineDataAttribute("TestMscorlibReference", false)]
|
||||||
|
[InlineDataAttribute("TestMicrosoftCSharpReference", true)]
|
||||||
|
[InlineDataAttribute("TestMicrosoftCSharpReference", false)]
|
||||||
|
[InlineDataAttribute("TestSystemReference", true)]
|
||||||
|
[InlineDataAttribute("TestSystemReference", false)]
|
||||||
|
[InlineDataAttribute("TestSystemCoreReference", true)]
|
||||||
|
[InlineDataAttribute("TestSystemCoreReference", false)]
|
||||||
|
public void TestDuplicateDefaultDesktopReferences(string sampleName, bool withLockFile)
|
||||||
{
|
{
|
||||||
// https://github.com/dotnet/cli/issues/1602
|
var instance = TestAssetsManager.CreateTestInstance(sampleName);
|
||||||
var instance = TestAssetsManager.CreateTestInstance("TestMicrosoftCSharpReference")
|
if (withLockFile)
|
||||||
.WithLockFiles();
|
{
|
||||||
|
instance = instance.WithLockFiles();
|
||||||
|
}
|
||||||
|
|
||||||
var context = new ProjectContextBuilder().WithProjectDirectory(instance.TestRoot)
|
var context = new ProjectContextBuilder().WithProjectDirectory(instance.TestRoot)
|
||||||
.WithTargetFramework("dnx451")
|
.WithTargetFramework("net451")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Assert.Equal(4, context.RootProject.Dependencies.Count());
|
Assert.Equal(4, context.RootProject.Dependencies.Count());
|
||||||
|
|
|
@ -596,6 +596,21 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestMscorlibLibraryDuplication()
|
||||||
|
{
|
||||||
|
var projectPath = Path.Combine(RepoRoot, "TestAssets", "ProjectModelServer", "MscorlibLibraryDuplication");
|
||||||
|
|
||||||
|
using (var server = new DthTestServer(_loggerFactory))
|
||||||
|
using (var client = new DthTestClient(server, _loggerFactory))
|
||||||
|
{
|
||||||
|
client.Initialize(projectPath);
|
||||||
|
|
||||||
|
var messages = client.DrainAllMessages();
|
||||||
|
messages.AssertDoesNotContain(MessageTypes.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static string NormalizePathString(string original)
|
private static string NormalizePathString(string original)
|
||||||
{
|
{
|
||||||
return original.Replace('/', Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar);
|
return original.Replace('/', Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue