From 875e275e38a7ed465ada931bece9ba83e8703ea2 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Mon, 31 Oct 2016 16:34:37 -0700 Subject: [PATCH] Revert "When Library add reference to NETStandardLib if not present" This reverts commit 57d79bb2d35b44ea3f1269a7c655e0b4cc0248b7. --- .../LibraryWithNetStandardLibRef/.noautobuild | 1 - .../LibraryWithNetStandardLibRef/Program.cs | 5 -- .../LibraryWithNetStandardLibRef/project.json | 10 --- .../.noautobuild | 1 - .../Program.cs | 5 -- .../project.json | 9 --- .../PackageConstants.cs | 2 - .../ProjectExtensions.cs | 70 +++++++++---------- .../ProjectType.cs | 5 +- .../MigratePackageDependenciesAndToolsRule.cs | 15 ---- ...enThatIWantToMigratePackageDependencies.cs | 30 -------- .../GivenThatIWantToMigrateTestApps.cs | 13 ---- 12 files changed, 37 insertions(+), 129 deletions(-) delete mode 100644 TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild delete mode 100644 TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs delete mode 100644 TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json delete mode 100644 TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild delete mode 100644 TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs delete mode 100644 TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json diff --git a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild deleted file mode 100644 index 8f7edc4ac..000000000 --- a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild +++ /dev/null @@ -1 +0,0 @@ -noautobuild \ No newline at end of file diff --git a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs deleted file mode 100644 index 79ddf6c75..000000000 --- a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System; - -class Program -{ -} diff --git a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json deleted file mode 100644 index 519b9beee..000000000 --- a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "frameworks": { - "netstandard1.3": { - "dependencies": { - "System.AppContext": "4.1.0", - "NETStandard.Library": "1.5.0" - } - } - } -} diff --git a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild deleted file mode 100644 index 8f7edc4ac..000000000 --- a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild +++ /dev/null @@ -1 +0,0 @@ -noautobuild \ No newline at end of file diff --git a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs deleted file mode 100644 index 79ddf6c75..000000000 --- a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System; - -class Program -{ -} diff --git a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json deleted file mode 100644 index 2ef2a4a2c..000000000 --- a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "frameworks": { - "netstandard1.3": { - "dependencies": { - "System.AppContext": "4.1.0" - } - } - } -} diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs b/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs index 6317b2a71..f897d09be 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs @@ -19,8 +19,6 @@ namespace Microsoft.DotNet.ProjectJsonMigration public const string TestSdkPackageName = "Microsoft.NET.Test.Sdk"; public const string XUnitPackageName = "xunit"; public const string XUnitRunnerPackageName = "xunit.runner.visualstudio"; - public const string NetStandardPackageName = "NETStandard.Library"; - public const string NetStandardPackageVersion = "1.6.0"; public static readonly IDictionary ProjectDependencyPackages = new Dictionary { diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs index 9bca917b0..a2e754d26 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs @@ -13,59 +13,59 @@ namespace Microsoft.DotNet.ProjectJsonMigration { public static ProjectType GetProjectType(this Project project) { - ProjectType projectType = ProjectType.Library; - if (project.IsTestProject) + var projectType = ProjectType.Console; + if (project.IsWebProject()) + { + projectType = ProjectType.Web; + } + else if (project.IsTestProject) { projectType = ProjectType.Test; } - else if (project.HasEntryPoint()) - { - if (project.HasDependency(ContainingName(".AspNetCore."))) - { - projectType = ProjectType.Web; - } - else - { - projectType = ProjectType.Console; - } - } return projectType; } - private static bool HasEntryPoint(this Project project) + private static bool IsWebProject(this Project project) { - return project.GetCompilerOptions(null, "Debug").EmitEntryPoint.GetValueOrDefault(); - } - - private static Func ContainingName(string nameSegment) - { - return x => x.Name.IndexOf(nameSegment, StringComparison.OrdinalIgnoreCase) > -1; - } - - public static bool HasDependency(this Project project, Func pred) - { - if (HasAnyDependency(project.Dependencies, pred)) + if(project.IsTestProject) { - return true; + return false; } - foreach (var tf in project.GetTargetFrameworks()) + var isExecutable = project.GetCompilerOptions(null, "Debug").EmitEntryPoint.GetValueOrDefault(); + if (isExecutable + && project.HasAnyPackageContainingName(".AspNetCore.")) { - if(HasAnyDependency(tf.Dependencies, pred)) - { - return true; - } + return true; } return false; } - private static bool HasAnyDependency( - IEnumerable dependencies, - Func pred) + private static bool HasAnyPackageContainingName(this Project project, string nameSegment) { - return dependencies.Any(pred); + var containsPackageName = HasAnyPackageContainingName( + new ReadOnlyCollection(project.Dependencies), + nameSegment); + foreach (var tf in project.GetTargetFrameworks()) + { + if(containsPackageName) + { + break; + } + + containsPackageName = HasAnyPackageContainingName(tf.Dependencies, nameSegment); + } + + return containsPackageName; + } + + private static bool HasAnyPackageContainingName( + IReadOnlyList dependencies, + string nameSegment) + { + return dependencies.Any(x => x.Name.IndexOf(nameSegment, StringComparison.OrdinalIgnoreCase) > -1); } } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs index 93349d576..659ee6d5d 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs @@ -3,8 +3,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration internal enum ProjectType { Console, - Library, - Test, - Web + Web, + Test } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs index c6a3ff2e2..a9f04e13c 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs @@ -136,21 +136,6 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules mergeExisting: false); } break; - case ProjectType.Library: - if (!project.HasDependency( - (dep) => dep.Name.Trim().ToLower() == PackageConstants.NetStandardPackageName.ToLower())) - { - _transformApplicator.Execute( - PackageDependencyInfoTransform().Transform( - new PackageDependencyInfo - { - Name = PackageConstants.NetStandardPackageName, - Version = PackageConstants.NetStandardPackageVersion - }), - noFrameworkPackageReferenceItemGroup, - mergeExisting: true); - } - break; default: break; } diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs index 4170568fe..0fd10e329 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs @@ -347,36 +347,6 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests i.GetMetadataWithName("Version").Value == "2.2.0-beta4-build1188")); } - [Theory] - [InlineData(@" - { - ""frameworks"": { - ""netstandard1.3"": { - ""dependencies"": { - ""System.AppContext"": ""4.1.0"", - ""NETStandard.Library"": ""1.5.0"" - } - } - } - }")] - [InlineData(@" - { - ""frameworks"": { - ""netstandard1.3"": { - ""dependencies"": { - ""System.AppContext"": ""4.1.0"" - } - } - } - }")] - public void It_migrates_library_and_does_not_double_netstandard_ref(string pjContent) - { - var mockProj = RunPackageDependenciesRuleOnPj(pjContent); - - mockProj.Items.Should().ContainSingle( - i => (i.Include == "NETStandard.Library" && i.ItemType == "PackageReference")); - } - private void EmitsPackageReferences(ProjectRootElement mockProj, params Tuple[] packageSpecs) { foreach (var packageSpec in packageSpecs) diff --git a/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs b/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs index c954d0206..a411de556 100644 --- a/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs +++ b/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs @@ -423,19 +423,6 @@ namespace Microsoft.DotNet.Migration.Tests .Count().Should().Be(1); } - [Theory] - [InlineData("LibraryWithoutNetStandardLibRef")] - [InlineData("LibraryWithNetStandardLibRef")] - public void It_migrates_and_builds_library(string projectName) - { - var projectDirectory = TestAssetsManager.CreateTestInstance(projectName, - callingMethod: $"{nameof(It_migrates_and_builds_library)}-projectName").Path; - - MigrateProject(projectDirectory); - Restore(projectDirectory, projectName); - BuildMSBuild(projectDirectory, projectName); - } - private void VerifyAutoInjectedDesktopReferences(string projectDirectory, string projectName, bool shouldBePresent) { if (projectName != null)