diff --git a/TestAssets/DesktopTestProjects/AppWithProjTool2Fx/App.csproj b/TestAssets/DesktopTestProjects/AppWithProjTool2Fx/App.csproj index 110929efb..f3d14e2f3 100644 --- a/TestAssets/DesktopTestProjects/AppWithProjTool2Fx/App.csproj +++ b/TestAssets/DesktopTestProjects/AppWithProjTool2Fx/App.csproj @@ -5,6 +5,7 @@ netcoreapp1.0;net451 Exe $(PackageTargetFallback);portable-net45+win8;dnxcore50 + win7-x64;win7-x86;osx.10.10-x64;osx.10.11-x64;ubuntu.14.04-x64;ubuntu.16.04-x64;centos.7-x64;rhel.7.2-x64;debian.8-x64;fedora.23-x64;opensuse.13.2-x64 @@ -13,7 +14,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/DesktopTestProjects/AutoAddDesktopReferencesDuringMigrate/project.json b/TestAssets/DesktopTestProjects/AutoAddDesktopReferencesDuringMigrate/project.json index a7dea7e1d..1720635d6 100644 --- a/TestAssets/DesktopTestProjects/AutoAddDesktopReferencesDuringMigrate/project.json +++ b/TestAssets/DesktopTestProjects/AutoAddDesktopReferencesDuringMigrate/project.json @@ -7,5 +7,18 @@ "dependencies": {}, "frameworks": { "net451": {} + }, + "runtimes": { + "win7-x64": {}, + "win7-x86": {}, + "osx.10.10-x64": {}, + "osx.10.11-x64": {}, + "ubuntu.14.04-x64": {}, + "ubuntu.16.04-x64": {}, + "centos.7-x64": {}, + "rhel.7.2-x64": {}, + "debian.8-x64": {}, + "fedora.23-x64": {}, + "opensuse.13.2-x64": {} } } diff --git a/TestAssets/DesktopTestProjects/LibWithProjTool2Fx/Lib.csproj b/TestAssets/DesktopTestProjects/LibWithProjTool2Fx/Lib.csproj index cecdf152a..a20781af5 100644 --- a/TestAssets/DesktopTestProjects/LibWithProjTool2Fx/Lib.csproj +++ b/TestAssets/DesktopTestProjects/LibWithProjTool2Fx/Lib.csproj @@ -13,7 +13,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/NonRestoredTestProjects/TestProjectWithUnresolvedPlatformDependency/TestProjectWithUnresolvedPlatformDependency.csproj b/TestAssets/NonRestoredTestProjects/TestProjectWithUnresolvedPlatformDependency/TestProjectWithUnresolvedPlatformDependency.csproj index 0983f08f8..753ce3b5a 100755 --- a/TestAssets/NonRestoredTestProjects/TestProjectWithUnresolvedPlatformDependency/TestProjectWithUnresolvedPlatformDependency.csproj +++ b/TestAssets/NonRestoredTestProjects/TestProjectWithUnresolvedPlatformDependency/TestProjectWithUnresolvedPlatformDependency.csproj @@ -13,7 +13,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/AppWithDepOnToolWithOutputName/AppWithDepOnToolWithOutputName.csproj b/TestAssets/TestProjects/AppWithDepOnToolWithOutputName/AppWithDepOnToolWithOutputName.csproj index 0c47bdf3f..43f7a3f89 100755 --- a/TestAssets/TestProjects/AppWithDepOnToolWithOutputName/AppWithDepOnToolWithOutputName.csproj +++ b/TestAssets/TestProjects/AppWithDepOnToolWithOutputName/AppWithDepOnToolWithOutputName.csproj @@ -12,7 +12,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/AppWithDirectAndToolDep/AppWithDirectAndToolDep.csproj b/TestAssets/TestProjects/AppWithDirectAndToolDep/AppWithDirectAndToolDep.csproj index f37b2dba6..28d0d536b 100755 --- a/TestAssets/TestProjects/AppWithDirectAndToolDep/AppWithDirectAndToolDep.csproj +++ b/TestAssets/TestProjects/AppWithDirectAndToolDep/AppWithDirectAndToolDep.csproj @@ -12,7 +12,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/AppWithDirectDep/AppWithDirectDep.csproj b/TestAssets/TestProjects/AppWithDirectDep/AppWithDirectDep.csproj index 87e79722c..d56778ff1 100755 --- a/TestAssets/TestProjects/AppWithDirectDep/AppWithDirectDep.csproj +++ b/TestAssets/TestProjects/AppWithDirectDep/AppWithDirectDep.csproj @@ -21,7 +21,7 @@ - 1.0.0-alpha-20161012-3 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/AppWithDirectDepWithOutputName/AppWithDirectDepWithOutputName.csproj b/TestAssets/TestProjects/AppWithDirectDepWithOutputName/AppWithDirectDepWithOutputName.csproj index a1803c769..3dfa82c90 100755 --- a/TestAssets/TestProjects/AppWithDirectDepWithOutputName/AppWithDirectDepWithOutputName.csproj +++ b/TestAssets/TestProjects/AppWithDirectDepWithOutputName/AppWithDirectDepWithOutputName.csproj @@ -12,7 +12,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/AppWithMultipleFxAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj b/TestAssets/TestProjects/AppWithMultipleFxAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj index a7fad9b20..5dc85d343 100644 --- a/TestAssets/TestProjects/AppWithMultipleFxAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj +++ b/TestAssets/TestProjects/AppWithMultipleFxAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj @@ -9,7 +9,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/AppWithToolDependency/AppWithToolDependency.csproj b/TestAssets/TestProjects/AppWithToolDependency/AppWithToolDependency.csproj index 28f991567..721b9712e 100755 --- a/TestAssets/TestProjects/AppWithToolDependency/AppWithToolDependency.csproj +++ b/TestAssets/TestProjects/AppWithToolDependency/AppWithToolDependency.csproj @@ -12,7 +12,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/DependencyContextFromTool/DependencyContextFromTool.csproj b/TestAssets/TestProjects/DependencyContextFromTool/DependencyContextFromTool.csproj index 7b91a326c..b6e9522d6 100755 --- a/TestAssets/TestProjects/DependencyContextFromTool/DependencyContextFromTool.csproj +++ b/TestAssets/TestProjects/DependencyContextFromTool/DependencyContextFromTool.csproj @@ -14,7 +14,7 @@ - 1.0.0-alpha-20161012-3 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild new file mode 100644 index 000000000..8f7edc4ac --- /dev/null +++ b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/.noautobuild @@ -0,0 +1 @@ +noautobuild \ No newline at end of file diff --git a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs new file mode 100644 index 000000000..79ddf6c75 --- /dev/null +++ b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/Program.cs @@ -0,0 +1,5 @@ +using System; + +class Program +{ +} diff --git a/TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json new file mode 100644 index 000000000..519b9beee --- /dev/null +++ b/TestAssets/TestProjects/LibraryWithNetStandardLibRef/project.json @@ -0,0 +1,10 @@ +{ + "frameworks": { + "netstandard1.3": { + "dependencies": { + "System.AppContext": "4.1.0", + "NETStandard.Library": "1.5.0" + } + } + } +} diff --git a/TestAssets/TestProjects/LibraryWithOutputAssemblyName/MyLibrary.csproj b/TestAssets/TestProjects/LibraryWithOutputAssemblyName/MyLibrary.csproj index f32fd4d2e..871825f1c 100755 --- a/TestAssets/TestProjects/LibraryWithOutputAssemblyName/MyLibrary.csproj +++ b/TestAssets/TestProjects/LibraryWithOutputAssemblyName/MyLibrary.csproj @@ -11,7 +11,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild new file mode 100644 index 000000000..8f7edc4ac --- /dev/null +++ b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/.noautobuild @@ -0,0 +1 @@ +noautobuild \ No newline at end of file diff --git a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs new file mode 100644 index 000000000..79ddf6c75 --- /dev/null +++ b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/Program.cs @@ -0,0 +1,5 @@ +using System; + +class Program +{ +} diff --git a/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json new file mode 100644 index 000000000..2ef2a4a2c --- /dev/null +++ b/TestAssets/TestProjects/LibraryWithoutNetStandardLibRef/project.json @@ -0,0 +1,9 @@ +{ + "frameworks": { + "netstandard1.3": { + "dependencies": { + "System.AppContext": "4.1.0" + } + } + } +} diff --git a/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworks/MSBuildAppWithMultipleFrameworks.csproj b/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworks/MSBuildAppWithMultipleFrameworks.csproj index e7842b636..a8887e874 100644 --- a/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworks/MSBuildAppWithMultipleFrameworks.csproj +++ b/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworks/MSBuildAppWithMultipleFrameworks.csproj @@ -9,7 +9,7 @@ - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworksAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj b/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworksAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj index 0f8b4a535..5dc85d343 100644 --- a/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworksAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj +++ b/TestAssets/TestProjects/MSBuildAppWithMultipleFrameworksAndTools/MSBuildAppWithMultipleFrameworksAndTools.csproj @@ -9,7 +9,7 @@ - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj b/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj index ec55505c2..5d222791c 100644 --- a/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj +++ b/TestAssets/TestProjects/MSBuildTestApp/MSBuildTestApp.csproj @@ -16,7 +16,7 @@ 1.0.1 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/CsprojLibrary1.csproj b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/CsprojLibrary1.csproj index 4cf4c469a..556860038 100644 --- a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/CsprojLibrary1.csproj +++ b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/CsprojLibrary1.csproj @@ -14,7 +14,7 @@ - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/project.json b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/project.json index ea1b66242..20613dfc1 100644 --- a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/project.json +++ b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary1/project.json @@ -3,7 +3,7 @@ "frameworks": { "netstandard1.5": { "dependencies": { - "Microsoft.NET.Sdk": "1.0.0-alpha-20161026-2", + "Microsoft.NET.Sdk": "1.0.0-alpha-20161029-1", "NETStandard.Library": "1.6.0" } } diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/CsprojLibrary2.csproj b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/CsprojLibrary2.csproj index 4cf4c469a..556860038 100644 --- a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/CsprojLibrary2.csproj +++ b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/CsprojLibrary2.csproj @@ -14,7 +14,7 @@ - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/project.json b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/project.json index ea1b66242..20613dfc1 100644 --- a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/project.json +++ b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary2/project.json @@ -3,7 +3,7 @@ "frameworks": { "netstandard1.5": { "dependencies": { - "Microsoft.NET.Sdk": "1.0.0-alpha-20161026-2", + "Microsoft.NET.Sdk": "1.0.0-alpha-20161029-1", "NETStandard.Library": "1.6.0" } } diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/CsprojLibrary3.csproj b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/CsprojLibrary3.csproj index 4cf4c469a..556860038 100644 --- a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/CsprojLibrary3.csproj +++ b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/CsprojLibrary3.csproj @@ -14,7 +14,7 @@ - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/project.json b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/project.json index ea1b66242..20613dfc1 100644 --- a/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/project.json +++ b/TestAssets/TestProjects/TestAppDependencyGraph/CsprojLibrary3/project.json @@ -3,7 +3,7 @@ "frameworks": { "netstandard1.5": { "dependencies": { - "Microsoft.NET.Sdk": "1.0.0-alpha-20161026-2", + "Microsoft.NET.Sdk": "1.0.0-alpha-20161029-1", "NETStandard.Library": "1.6.0" } } diff --git a/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj b/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj index 9fa2cfbb5..dc34e6004 100755 --- a/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj +++ b/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj @@ -12,7 +12,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/TestAppWithProjDepTool/TestAppWithProjDepTool.csproj b/TestAssets/TestProjects/TestAppWithProjDepTool/TestAppWithProjDepTool.csproj index 3be88edba..8a056988a 100644 --- a/TestAssets/TestProjects/TestAppWithProjDepTool/TestAppWithProjDepTool.csproj +++ b/TestAssets/TestProjects/TestAppWithProjDepTool/TestAppWithProjDepTool.csproj @@ -15,7 +15,7 @@ 1.0.1 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/.noautobuild b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/.noautobuild new file mode 100644 index 000000000..e69de29bb diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/Program.cs b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/Program.cs new file mode 100644 index 000000000..9576b17c4 --- /dev/null +++ b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/Program.cs @@ -0,0 +1,19 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; +using System.Diagnostics; +using TestLibrary; + +namespace TestApp +{ + public class Program + { + public static int Main(string[] args) + { + Console.WriteLine("This string came from ProjectA"); + Console.WriteLine($"{ProjectB.GetMessage()}"); + return 0; + } + } +} diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/project.json b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/project.json new file mode 100644 index 000000000..5287abb9b --- /dev/null +++ b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectA/project.json @@ -0,0 +1,27 @@ +{ + "version": "1.0.0-*", + "buildOptions": { + "emitEntryPoint": true, + "preserveCompilationContext": true + }, + "dependencies": { + "ProjectB": "1.0.0-*", + "Microsoft.NETCore.App": "1.0.1" + }, + "frameworks": { + "netcoreapp1.0": {} + }, + "runtimes": { + "win7-x64": {}, + "win7-x86": {}, + "osx.10.10-x64": {}, + "osx.10.11-x64": {}, + "ubuntu.14.04-x64": {}, + "ubuntu.16.04-x64": {}, + "centos.7-x64": {}, + "rhel.7.2-x64": {}, + "debian.8-x64": {}, + "fedora.23-x64": {}, + "opensuse.13.2-x64": {} + } +} diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/.noautobuild b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/.noautobuild new file mode 100644 index 000000000..e69de29bb diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/Helper.cs b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/Helper.cs new file mode 100644 index 000000000..5a986d891 --- /dev/null +++ b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/Helper.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace TestLibrary +{ + public static class ProjectB + { + public static string GetMessage() + { + return "This string came from ProjectB"; + } + } +} diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/project.json b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/project.json new file mode 100644 index 000000000..48bc772d8 --- /dev/null +++ b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/ProjectB/project.json @@ -0,0 +1,18 @@ +{ + "version": "1.0.0-*", + "buildOptions": { + "nowarn": [ + "CS1591" + ], + "xmlDoc": true, + "additionalArguments": [ + "-highentropyva+" + ] + }, + "dependencies": { + "NETStandard.Library": "1.6.0" + }, + "frameworks": { + "netstandard1.5": {} + } +} diff --git a/TestAssets/TestProjects/TestLibraryWithConfiguration/TestLibraryWithConfiguration.csproj b/TestAssets/TestProjects/TestLibraryWithConfiguration/TestLibraryWithConfiguration.csproj index c69ce99dd..3e748a942 100755 --- a/TestAssets/TestProjects/TestLibraryWithConfiguration/TestLibraryWithConfiguration.csproj +++ b/TestAssets/TestProjects/TestLibraryWithConfiguration/TestLibraryWithConfiguration.csproj @@ -14,7 +14,7 @@ - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 All diff --git a/TestAssets/TestProjects/VSTestDotNetCore/VSTestDotNetCore.csproj b/TestAssets/TestProjects/VSTestDotNetCore/VSTestDotNetCore.csproj index d7d9c648b..b0f9dc3d9 100644 --- a/TestAssets/TestProjects/VSTestDotNetCore/VSTestDotNetCore.csproj +++ b/TestAssets/TestProjects/VSTestDotNetCore/VSTestDotNetCore.csproj @@ -15,7 +15,7 @@ 1.0.1 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/build_projects/dotnet-cli-build/dotnet-cli-build.csproj b/build_projects/dotnet-cli-build/dotnet-cli-build.csproj index 258b0185a..d97aa8238 100644 --- a/build_projects/dotnet-cli-build/dotnet-cli-build.csproj +++ b/build_projects/dotnet-cli-build/dotnet-cli-build.csproj @@ -43,7 +43,7 @@ 1.0.1-beta-000933 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All @@ -51,8 +51,5 @@ - - $(DefineConstants);NETCOREAPP1_0 - \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ConstantPackageVersions.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ConstantPackageVersions.cs index 3071fb81d..6a0597418 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ConstantPackageVersions.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ConstantPackageVersions.cs @@ -6,5 +6,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration internal class ConstantPackageVersions { public const string AspNetToolsVersion = "1.0.0-rc1-final"; + public const string TestSdkPackageVersion = "15.0.0-preview-20161024-02"; + public const string XUnitPackageVersion = "2.2.0-beta3-build3402"; + public const string XUnitRunnerPackageVersion = "2.2.0-beta4-build1188"; } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs b/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs index a4822a176..6317b2a71 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs @@ -5,32 +5,67 @@ using System.Collections.Generic; namespace Microsoft.DotNet.ProjectJsonMigration { + internal class PackageDependencyInfo + { + public string Name { get; set; } + public string Version { get; set; } + public string PrivateAssets { get; set; } + } + internal class PackageConstants { public const string SdkPackageName = "Microsoft.NET.Sdk"; public const string WebSdkPackageName = "Microsoft.NET.Sdk.Web"; public const string TestSdkPackageName = "Microsoft.NET.Test.Sdk"; - public const string TestSdkPackageVersion = "15.0.0-preview-20161024-02"; public const string XUnitPackageName = "xunit"; - public const string XUnitPackageVersion = "2.2.0-beta3-build3402"; public const string XUnitRunnerPackageName = "xunit.runner.visualstudio"; - public const string XUnitRunnerPackageVersion = "2.2.0-beta4-build1188"; + public const string NetStandardPackageName = "NETStandard.Library"; + public const string NetStandardPackageVersion = "1.6.0"; - public static readonly IDictionary AspProjectDependencyToolsPackages = new Dictionary { - {"Microsoft.EntityFrameworkCore.Tools", "Microsoft.EntityFrameworkCore.Tools"}, - {"Microsoft.AspNetCore.Razor.Tools", "Microsoft.AspNetCore.Razor.Design"}, - {"Microsoft.AspNetCore.Razor.Design", "Microsoft.AspNetCore.Razor.Design"}, - {"Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "Microsoft.VisualStudio.Web.CodGeneration.Design"}, - {"Microsoft.VisualStudio.Web.CodeGeneration.Tools", ""}, + public static readonly IDictionary ProjectDependencyPackages = + new Dictionary { + {"Microsoft.EntityFrameworkCore.Tools", new PackageDependencyInfo { + Name = "Microsoft.EntityFrameworkCore.Tools", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.AspNetCore.Razor.Tools", new PackageDependencyInfo { + Name = "Microsoft.AspNetCore.Razor.Design", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.AspNetCore.Razor.Design", new PackageDependencyInfo { + Name = "Microsoft.AspNetCore.Razor.Design", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.VisualStudio.Web.CodeGenerators.Mvc", new PackageDependencyInfo { + Name = "Microsoft.VisualStudio.Web.CodeGeneration.Design", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.VisualStudio.Web.CodeGeneration.Tools", null}, + { TestSdkPackageName, new PackageDependencyInfo { + Name = TestSdkPackageName, + Version = ConstantPackageVersions.TestSdkPackageVersion } }, + { XUnitPackageName, new PackageDependencyInfo { + Name = XUnitPackageName, + Version = ConstantPackageVersions.XUnitPackageVersion } }, + { XUnitRunnerPackageName, new PackageDependencyInfo { + Name = XUnitRunnerPackageName, + Version = ConstantPackageVersions.XUnitRunnerPackageVersion } }, }; - public static readonly IDictionary AspProjectToolsPackages = new Dictionary { - {"Microsoft.EntityFrameworkCore.Tools", "Microsoft.EntityFrameworkCore.Tools.DotNet"}, - {"Microsoft.AspNetCore.Razor.Tools", "Microsoft.AspNetCore.Razor.Tools"}, - {"Microsoft.VisualStudio.Web.CodeGeneration.Tools", "Microsoft.VisualStudio.Web.CodeGeneration.Tools"}, - {"Microsoft.DotNet.Watcher.Tools", "Microsoft.DotNet.Watcher.Tools"}, - {"Microsoft.Extensions.SecretManager.Tools", "Microsoft.Extensions.SecretManager.Tools"}, - {"Microsoft.AspNetCore.Server.IISIntegration.Tools", ""} + public static readonly IDictionary ProjectToolPackages = + new Dictionary { + {"Microsoft.EntityFrameworkCore.Tools", new PackageDependencyInfo { + Name = "Microsoft.EntityFrameworkCore.Tools.DotNet", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.AspNetCore.Razor.Tools", new PackageDependencyInfo { + Name = "Microsoft.AspNetCore.Razor.Tools", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.VisualStudio.Web.CodeGeneration.Tools", new PackageDependencyInfo { + Name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.DotNet.Watcher.Tools", new PackageDependencyInfo { + Name = "Microsoft.DotNet.Watcher.Tools", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.Extensions.SecretManager.Tools", new PackageDependencyInfo { + Name = "Microsoft.Extensions.SecretManager.Tools", + Version = ConstantPackageVersions.AspNetToolsVersion } }, + { "Microsoft.AspNetCore.Server.IISIntegration.Tools", null} }; } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs index b82adcd2f..ab69f6cc0 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs @@ -98,7 +98,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration foreach (var projectFileDependency in projectFileDependenciesForFramework.Where(p => - p.LibraryRange.TypeConstraint == LibraryDependencyTarget.Project)) + p.LibraryRange.TypeConstraint == LibraryDependencyTarget.Project || + p.LibraryRange.TypeConstraint == LibraryDependencyTarget.All)) { var dependencyName = projectFileDependency.Name; diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs index a2e754d26..9bca917b0 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) { - var projectType = ProjectType.Console; - if (project.IsWebProject()) - { - projectType = ProjectType.Web; - } - else if (project.IsTestProject) + ProjectType projectType = ProjectType.Library; + 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 IsWebProject(this Project project) + private static bool HasEntryPoint(this Project project) { - if(project.IsTestProject) - { - return false; - } + return project.GetCompilerOptions(null, "Debug").EmitEntryPoint.GetValueOrDefault(); + } - var isExecutable = project.GetCompilerOptions(null, "Debug").EmitEntryPoint.GetValueOrDefault(); - if (isExecutable - && project.HasAnyPackageContainingName(".AspNetCore.")) + 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)) { return true; } + foreach (var tf in project.GetTargetFrameworks()) + { + if(HasAnyDependency(tf.Dependencies, pred)) + { + return true; + } + } + return false; } - private static bool HasAnyPackageContainingName(this Project project, string nameSegment) + private static bool HasAnyDependency( + IEnumerable dependencies, + Func 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); + return dependencies.Any(pred); } } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs index 659ee6d5d..93349d576 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs @@ -3,7 +3,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration internal enum ProjectType { Console, - Web, - Test + Library, + Test, + Web } } \ 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 ab203101d..c6a3ff2e2 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs @@ -108,7 +108,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules new PackageDependencyInfo { Name = PackageConstants.TestSdkPackageName, - Version = PackageConstants.TestSdkPackageVersion + Version = ConstantPackageVersions.TestSdkPackageVersion }), noFrameworkPackageReferenceItemGroup, mergeExisting: false); @@ -120,7 +120,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules new PackageDependencyInfo { Name = PackageConstants.XUnitPackageName, - Version = PackageConstants.XUnitPackageVersion + Version = ConstantPackageVersions.XUnitPackageVersion }), noFrameworkPackageReferenceItemGroup, mergeExisting: false); @@ -130,12 +130,27 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules new PackageDependencyInfo { Name = PackageConstants.XUnitRunnerPackageName, - Version = PackageConstants.XUnitRunnerPackageVersion + Version = ConstantPackageVersions.XUnitRunnerPackageVersion }), noFrameworkPackageReferenceItemGroup, 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; } @@ -186,7 +201,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules _transformApplicator.Execute( ToolTransform().Transform(ToPackageDependencyInfo( tool, - PackageConstants.AspProjectToolsPackages)), + PackageConstants.ProjectToolPackages)), itemGroup, mergeExisting: true); } @@ -243,7 +258,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules _transformApplicator.Execute( transform.Transform(ToPackageDependencyInfo( packageDependency, - PackageConstants.AspProjectDependencyToolsPackages)), + PackageConstants.ProjectDependencyPackages)), itemGroup, mergeExisting: true); } @@ -251,22 +266,23 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules private PackageDependencyInfo ToPackageDependencyInfo( ProjectLibraryDependency dependency, - IDictionary toolsDictionary) + IDictionary dependencyToVersionMap) { var name = dependency.Name; var version = dependency.LibraryRange?.VersionRange?.OriginalString; - if (toolsDictionary.ContainsKey(name)) + if (dependencyToVersionMap.ContainsKey(name)) { - name = toolsDictionary[name]; - version = ConstantPackageVersions.AspNetToolsVersion; - - if(string.IsNullOrEmpty(name)) + var dependencyInfo = dependencyToVersionMap[name]; + if (dependencyInfo == null) { return null; } - } + name = dependencyInfo.Name; + version = dependencyInfo.Version; + } + return new PackageDependencyInfo { Name = name, @@ -391,12 +407,5 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules "PackageTargetFallback", t => $"$(PackageTargetFallback);{string.Join(";", t.Imports)}", t => t.Imports.OrEmptyIfNull().Any()); - - private class PackageDependencyInfo - { - public string Name {get; set;} - public string Version {get; set;} - public string PrivateAssets {get; set;} - } } } diff --git a/src/Microsoft.DotNet.TestFramework/TestAssetInstance.cs b/src/Microsoft.DotNet.TestFramework/TestAssetInstance.cs index 12c6c27d2..b8edd694c 100644 --- a/src/Microsoft.DotNet.TestFramework/TestAssetInstance.cs +++ b/src/Microsoft.DotNet.TestFramework/TestAssetInstance.cs @@ -5,7 +5,9 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Reflection; using System.Runtime.CompilerServices; +using System.Text; using System.Threading.Tasks; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Tools.Common; @@ -67,6 +69,29 @@ namespace Microsoft.DotNet.TestFramework return this; } + public TestAssetInstance WithNuGetConfig(string nugetCache) + { + var thisAssembly = typeof(TestAssetInstance).GetTypeInfo().Assembly; + var newNuGetConfig = Root.GetFile("Nuget.config"); + + var content = @" + + + + + "; + content = content.Replace("$fullpath$", nugetCache); + + using (var newNuGetConfigStream = + new FileStream(newNuGetConfig.FullName, FileMode.Create, FileAccess.Write)) + { + var contentBytes = new UTF8Encoding(true).GetBytes(content); + newNuGetConfigStream.Write(contentBytes, 0, contentBytes.Length); + } + + return this; + } + private void CopyFiles(IEnumerable filesToCopy) { foreach (var file in filesToCopy) diff --git a/src/dotnet/commands/dotnet-build/Program.cs b/src/dotnet/commands/dotnet-build/Program.cs index d5251a19f..3d0a3f060 100644 --- a/src/dotnet/commands/dotnet-build/Program.cs +++ b/src/dotnet/commands/dotnet-build/Program.cs @@ -28,6 +28,9 @@ namespace Microsoft.DotNet.Tools.Build CommandOption outputOption = app.Option("-o|--output ", "Directory in which to place outputs", CommandOptionType.SingleValue); CommandOption frameworkOption = app.Option("-f|--framework ", "Compile a specific framework", CommandOptionType.SingleValue); + CommandOption runtimeOption = app.Option( + "-r|--runtime ", "Target runtime to build for. The default is to build a portable application.", + CommandOptionType.SingleValue); CommandOption configurationOption = app.Option("-c|--configuration ", "Configuration under which to build", CommandOptionType.SingleValue); CommandOption versionSuffixOption = app.Option("--version-suffix ", "Defines the value for the $(VersionSuffix) property in the project", CommandOptionType.SingleValue); @@ -62,6 +65,11 @@ namespace Microsoft.DotNet.Tools.Build msbuildArgs.Add($"/p:TargetFramework={frameworkOption.Value()}"); } + if (runtimeOption.HasValue()) + { + msbuildArgs.Add($"/p:RuntimeIdentifier={runtimeOption.Value()}"); + } + if (configurationOption.HasValue()) { msbuildArgs.Add($"/p:Configuration={configurationOption.Value()}"); diff --git a/src/dotnet/commands/dotnet-new/CSharp_Console/$projectName$.csproj b/src/dotnet/commands/dotnet-new/CSharp_Console/$projectName$.csproj index 74fb291e9..c82874b90 100755 --- a/src/dotnet/commands/dotnet-new/CSharp_Console/$projectName$.csproj +++ b/src/dotnet/commands/dotnet-new/CSharp_Console/$projectName$.csproj @@ -16,7 +16,7 @@ 1.0.1 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/src/dotnet/commands/dotnet-new/CSharp_Lib/$projectName$.csproj b/src/dotnet/commands/dotnet-new/CSharp_Lib/$projectName$.csproj index 296cb5b67..a8c6f3bbb 100755 --- a/src/dotnet/commands/dotnet-new/CSharp_Lib/$projectName$.csproj +++ b/src/dotnet/commands/dotnet-new/CSharp_Lib/$projectName$.csproj @@ -15,7 +15,7 @@ 1.6 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/src/dotnet/commands/dotnet-new/CSharp_Web/$projectName$.csproj b/src/dotnet/commands/dotnet-new/CSharp_Web/$projectName$.csproj index 56dfdae11..1b7f27442 100644 --- a/src/dotnet/commands/dotnet-new/CSharp_Web/$projectName$.csproj +++ b/src/dotnet/commands/dotnet-new/CSharp_Web/$projectName$.csproj @@ -17,7 +17,7 @@ 1.0.1 - 1.0.0-alpha-20161019-1 + 1.0.0-alpha-20161029-1 1.0.0 diff --git a/src/dotnet/commands/dotnet-new/CSharp_xunittest/$projectName$.csproj b/src/dotnet/commands/dotnet-new/CSharp_xunittest/$projectName$.csproj index de3f57990..8884e6a87 100644 --- a/src/dotnet/commands/dotnet-new/CSharp_xunittest/$projectName$.csproj +++ b/src/dotnet/commands/dotnet-new/CSharp_xunittest/$projectName$.csproj @@ -16,7 +16,7 @@ 1.0.1 - 1.0.0-alpha-20161026-2 + 1.0.0-alpha-20161029-1 All diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs b/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs index 5ea3a457d..444d04a66 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs @@ -29,16 +29,24 @@ namespace Microsoft.DotNet.Cli.Utils.Tests [WindowsOnlyFact] public void It_resolves_desktop_apps_defaulting_to_Debug_Configuration() { + var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier(); var configuration = "Debug"; var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") .CreateInstance() .WithSourceFiles() - .WithRestoreFiles(); + .WithNuGetConfig(_repoDirectoriesProvider.TestPackages); + + var restoreCommand = new RestoreCommand() + .WithWorkingDirectory(testInstance.Root) + .WithRuntime(runtime) + .ExecuteWithCapturedOutput() + .Should().Pass(); var buildCommand = new BuildCommand() .WithWorkingDirectory(testInstance.Root) .WithConfiguration(configuration) + .WithRuntime(runtime) .WithCapturedOutput() .Execute() .Should().Pass(); @@ -60,16 +68,24 @@ namespace Microsoft.DotNet.Cli.Utils.Tests [WindowsOnlyFact] public void It_resolves_desktop_apps_when_configuration_is_Debug() { + var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier(); var configuration = "Debug"; var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") .CreateInstance() .WithSourceFiles() - .WithRestoreFiles(); + .WithNuGetConfig(_repoDirectoriesProvider.TestPackages); + + var restoreCommand = new RestoreCommand() + .WithWorkingDirectory(testInstance.Root) + .WithRuntime(runtime) + .ExecuteWithCapturedOutput() + .Should().Pass(); var buildCommand = new BuildCommand() .WithWorkingDirectory(testInstance.Root) .WithConfiguration(configuration) + .WithRuntime(runtime) .Execute() .Should().Pass(); @@ -89,16 +105,24 @@ namespace Microsoft.DotNet.Cli.Utils.Tests [WindowsOnlyFact] public void It_resolves_desktop_apps_when_configuration_is_Release() { - var configuration = "Release"; + var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier(); + var configuration = "Debug"; var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") .CreateInstance() .WithSourceFiles() - .WithRestoreFiles(); + .WithNuGetConfig(_repoDirectoriesProvider.TestPackages); + + var restoreCommand = new RestoreCommand() + .WithWorkingDirectory(testInstance.Root) + .WithRuntime(runtime) + .ExecuteWithCapturedOutput() + .Should().Pass(); var buildCommand = new BuildCommand() .WithWorkingDirectory(testInstance.Root) .WithConfiguration(configuration) + .WithRuntime(runtime) .WithCapturedOutput() .Execute() .Should().Pass(); @@ -120,16 +144,24 @@ namespace Microsoft.DotNet.Cli.Utils.Tests [WindowsOnlyFact] public void It_resolves_desktop_apps_using_configuration_passed_to_create() { - var configuration = "Release"; + var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier(); + var configuration = "Debug"; var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") .CreateInstance() .WithSourceFiles() - .WithRestoreFiles(); + .WithNuGetConfig(_repoDirectoriesProvider.TestPackages); + + var restoreCommand = new RestoreCommand() + .WithWorkingDirectory(testInstance.Root) + .WithRuntime(runtime) + .ExecuteWithCapturedOutput() + .Should().Pass(); var buildCommand = new BuildCommand() .WithWorkingDirectory(testInstance.Root) .WithConfiguration(configuration) + .WithRuntime(runtime) .WithCapturedOutput() .Execute() .Should().Pass(); diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateAspNetTools.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateAspNetTools.cs index ec4423710..f7fc798b8 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateAspNetTools.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateAspNetTools.cs @@ -15,7 +15,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests [InlineData("Microsoft.EntityFrameworkCore.Tools", "Microsoft.EntityFrameworkCore.Tools", ConstantPackageVersions.AspNetToolsVersion)] [InlineData("Microsoft.AspNetCore.Razor.Tools", "Microsoft.AspNetCore.Razor.Design", ConstantPackageVersions.AspNetToolsVersion)] [InlineData("Microsoft.AspNetCore.Razor.Design", "Microsoft.AspNetCore.Razor.Design", ConstantPackageVersions.AspNetToolsVersion)] - [InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "Microsoft.VisualStudio.Web.CodGeneration.Design", ConstantPackageVersions.AspNetToolsVersion)] + [InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "Microsoft.VisualStudio.Web.CodeGeneration.Design", ConstantPackageVersions.AspNetToolsVersion)] public void It_migrates_project_dependencies_to_a_new_name_and_version( string sourceToolName, string targetToolName, @@ -44,7 +44,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests } }"); - var packageRef = mockProj.Items.Where(i => i.Include != "Microsoft.NET.Sdk" && i.ItemType == "PackageReference").Should().BeEmpty(); + var packageRef = mockProj.Items.Where(i => + i.Include != "Microsoft.NET.Sdk" && + i.Include != "NETStandard.Library" && + i.ItemType == "PackageReference").Should().BeEmpty(); } [Theory] diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs index 50066736f..4170568fe 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs @@ -273,7 +273,9 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests }"); mockProj.Items.Should().ContainSingle( - i => (i.Include == "Microsoft.NET.Test.Sdk" && i.ItemType == "PackageReference")); + i => (i.Include == "Microsoft.NET.Test.Sdk" && + i.ItemType == "PackageReference" && + i.GetMetadataWithName("Version").Value == "15.0.0-preview-20161024-02")); mockProj.Items.Should().NotContain( i => (i.Include == "xunit" && i.ItemType == "PackageReference")); @@ -297,13 +299,82 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests }"); mockProj.Items.Should().ContainSingle( - i => (i.Include == "Microsoft.NET.Test.Sdk" && i.ItemType == "PackageReference")); + i => (i.Include == "Microsoft.NET.Test.Sdk" && + i.ItemType == "PackageReference" && + i.GetMetadataWithName("Version").Value == "15.0.0-preview-20161024-02")); mockProj.Items.Should().ContainSingle( - i => (i.Include == "xunit" && i.ItemType == "PackageReference")); + i => (i.Include == "xunit" && + i.ItemType == "PackageReference" && + i.GetMetadataWithName("Version").Value == "2.2.0-beta3-build3402")); mockProj.Items.Should().ContainSingle( - i => (i.Include == "xunit.runner.visualstudio" && i.ItemType == "PackageReference")); + i => (i.Include == "xunit.runner.visualstudio" && + i.ItemType == "PackageReference" && + i.GetMetadataWithName("Version").Value == "2.2.0-beta4-build1188")); + } + + [Fact] + public void It_migrates_test_projects_to_have_test_sdk_and_xunit_packagedependencies_overwrite_existing_packagedependencies() + { + var mockProj = RunPackageDependenciesRuleOnPj(@" + { + ""buildOptions"": { + ""emitEntryPoint"": true + }, + ""dependencies"": { + ""xunit"": ""2.2.0-beta3-build3330"" + }, + ""frameworks"": { + ""netcoreapp1.0"": {} + }, + ""testRunner"": ""xunit"" + }"); + + mockProj.Items.Should().ContainSingle( + i => (i.Include == "Microsoft.NET.Test.Sdk" && + i.ItemType == "PackageReference" && + i.GetMetadataWithName("Version").Value == "15.0.0-preview-20161024-02")); + + mockProj.Items.Should().ContainSingle( + i => (i.Include == "xunit" && + i.ItemType == "PackageReference" && + i.GetMetadataWithName("Version").Value == "2.2.0-beta3-build3402")); + + mockProj.Items.Should().ContainSingle( + i => (i.Include == "xunit.runner.visualstudio" && + i.ItemType == "PackageReference" && + 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) diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs index 346d35434..b6aa8915a 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs @@ -242,10 +242,29 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests [Fact] public void It_promotes_P2P_references_up_in_the_dependency_chain() { - var solutionDirectory = - TestAssetsManager.CreateTestInstance("TestAppDependencyGraph", callingMethod: "p").Path; + var mockProj = MigrateProject("TestAppDependencyGraph", "ProjectA"); - var appDirectory = Path.Combine(solutionDirectory, "ProjectA"); + var projectReferences = mockProj.Items.Where( + item => item.ItemType.Equals("ProjectReference", StringComparison.Ordinal)); + projectReferences.Count().Should().Be(7); + } + + [Fact] + public void It_migrates_unqualified_dependencies_as_ProjectReference_when_a_matching_project_is_found() + { + var mockProj = MigrateProject("TestAppWithUnqualifiedDependencies", "ProjectA"); + var projectReferenceInclude = Path.Combine("..", "ProjectB", "ProjectB.csproj"); + + var projectReferences = mockProj.Items.Should().ContainSingle( + item => item.ItemType == "ProjectReference" && item.Include == projectReferenceInclude); + } + + private ProjectRootElement MigrateProject(string solution, string project) + { + var solutionDirectory = + TestAssetsManager.CreateTestInstance(solution, callingMethod: "p").Path; + + var appDirectory = Path.Combine(solutionDirectory, project); var projectContext = ProjectContext.Create(appDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10); var mockProj = ProjectRootElement.Create(); @@ -254,9 +273,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests mockProj.AddPropertyGroup()); new MigrateProjectDependenciesRule().Apply(testSettings, testInputs); - var projectReferences = mockProj.Items.Where( - item => item.ItemType.Equals("ProjectReference", StringComparison.Ordinal)); - projectReferences.Count().Should().Be(7); + var s = mockProj.Items.Select(p => $"ItemType = {p.ItemType}, Include = {p.Include}"); + Console.WriteLine(string.Join(Environment.NewLine, s)); + + return mockProj; } } } diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/RestoreCommand.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/RestoreCommand.cs index a259dcc78..c0096101f 100644 --- a/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/RestoreCommand.cs +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/Commands/RestoreCommand.cs @@ -7,21 +7,40 @@ namespace Microsoft.DotNet.Tools.Test.Utilities { public sealed class RestoreCommand : TestCommand { + private string _runtime; + public RestoreCommand() : base("dotnet") { } + public RestoreCommand WithRuntime(string runtime) + { + _runtime = runtime; + + return this; + } + public override CommandResult Execute(string args = "") { - args = $"restore {args} --disable-parallel"; + args = $"restore {GetRuntime()} {args} --disable-parallel"; return base.Execute(args); } public override CommandResult ExecuteWithCapturedOutput(string args = "") { - args = $"restore {args} --disable-parallel"; + args = $"restore {GetRuntime()} {args} --disable-parallel"; return base.ExecuteWithCapturedOutput(args); } + + private string GetRuntime() + { + if (_runtime == null) + { + return null; + } + + return $"/p:RuntimeIdentifier={_runtime}"; + } } } diff --git a/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs b/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs index 356b2234c..c8ad0e772 100644 --- a/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs +++ b/test/Microsoft.DotNet.Tools.Tests.Utilities/RepoDirectoriesProvider.cs @@ -68,7 +68,7 @@ namespace Microsoft.DotNet.Tools.Test.Utilities _nugetPackages = nugetPackages ?? Path.Combine(RepoRoot, ".nuget", "packages"); _pjDotnet = pjDotnet ?? GetPjDotnetPath(); _stage2Sdk = Directory.EnumerateDirectories(Path.Combine(_artifacts, "stage2", "sdk")).First(); - _testPackages = Path.Combine(_artifacts, "tests", "packages"); + _testPackages = Path.Combine(RepoRoot, "artifacts", "testpackages", "packages"); } private string GetPjDotnetPath() diff --git a/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs b/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs index c240aa6ea..c954d0206 100644 --- a/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs +++ b/test/dotnet-migrate.Tests/GivenThatIWantToMigrateTestApps.cs @@ -371,13 +371,14 @@ namespace Microsoft.DotNet.Migration.Tests [InlineData("TestProjects", "PJTestAppSimple", false)] public void It_auto_add_desktop_references_during_migrate(string testGroup, string projectName, bool isDesktopApp) { + var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier(); var testAssetManager = GetTestGroupTestAssetsManager(testGroup); var projectDirectory = testAssetManager.CreateTestInstance(projectName).WithLockFiles().Path; CleanBinObj(projectDirectory); MigrateProject(new string[] { projectDirectory }); - Restore(projectDirectory); - BuildMSBuild(projectDirectory, projectName); + Restore(projectDirectory, runtime: runtime); + BuildMSBuild(projectDirectory, projectName, runtime:runtime); VerifyAutoInjectedDesktopReferences(projectDirectory, projectName, isDesktopApp); VerifyAllMSBuildOutputsRunnable(projectDirectory); } @@ -422,6 +423,19 @@ 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) @@ -584,10 +598,11 @@ namespace Microsoft.DotNet.Migration.Tests .Should().Pass(); } - private void Restore(string projectDirectory, string projectName=null) + private void Restore(string projectDirectory, string projectName=null, string runtime=null) { var command = new RestoreCommand() - .WithWorkingDirectory(projectDirectory); + .WithWorkingDirectory(projectDirectory) + .WithRuntime(runtime); if (projectName != null) { @@ -601,7 +616,11 @@ namespace Microsoft.DotNet.Migration.Tests } } - private string BuildMSBuild(string projectDirectory, string projectName, string configuration="Debug") + private string BuildMSBuild( + string projectDirectory, + string projectName, + string configuration="Debug", + string runtime=null) { if (projectName != null) { @@ -612,6 +631,7 @@ namespace Microsoft.DotNet.Migration.Tests var result = new BuildCommand() .WithWorkingDirectory(projectDirectory) + .WithRuntime(runtime) .ExecuteWithCapturedOutput($"{projectName} /p:Configuration={configuration}"); result