diff --git a/test/dotnet-new.Tests/GivenThatIWantANewApp.cs b/test/dotnet-new.Tests/GivenThatIWantANewApp.cs
index 649fa62ff..09454669b 100644
--- a/test/dotnet-new.Tests/GivenThatIWantANewApp.cs
+++ b/test/dotnet-new.Tests/GivenThatIWantANewApp.cs
@@ -7,6 +7,7 @@ using System.Linq;
 using System.Xml.Linq;
 using FluentAssertions;
 using Microsoft.DotNet.Tools.Test.Utilities;
+using Microsoft.Extensions.DependencyModel;
 using Xunit;
 
 namespace Microsoft.DotNet.New.Tests
@@ -70,36 +71,85 @@ namespace Microsoft.DotNet.New.Tests
                 .Should().Pass();
         }
 
-        [Fact]
-        public void NewClassLibRestoresCorrectNetStandardLibraryVersion()
+        [Theory]
+        [InlineData("console", "RuntimeFrameworkVersion", "Microsoft.NETCore.App")]
+        [InlineData("classlib", "NetStandardImplicitPackageVersion", "NETStandard.Library")]
+        public void NewProjectRestoresCorrectPackageVersion(string type, string propertyName, string packageName)
         {
-            var rootPath = TestAssets.CreateTestDirectory().FullName;
+            // These will fail when templates stop including explicit version.
+            // Collapse back to one method and remove the explicit version handling when that happens.
+            NewProjectRestoresCorrectPackageVersion(type, propertyName, packageName, deleteExplicitVersion: true);
+            NewProjectRestoresCorrectPackageVersion(type, propertyName, packageName, deleteExplicitVersion: false);
+        }
+
+        private void NewProjectRestoresCorrectPackageVersion(string type, string propertyName, string packageName, bool deleteExplicitVersion)
+        {
+            var rootPath = TestAssets.CreateTestDirectory(identifier: $"_{type}_{deleteExplicitVersion}").FullName;
             var packagesDirectory = Path.Combine(rootPath, "packages");
-            var projectName = "Library";
-            var projectFileName = $"{projectName}.csproj";
+            var projectName = "Project";
+            var expectedVersion = GetFrameworkPackageVersion();
 
             new NewCommand()
                 .WithWorkingDirectory(rootPath)
-                .Execute($"classlib --name {projectName} -o .")
+                .Execute($"{type} --name {projectName} -o .")
                 .Should().Pass();
 
+            ValidateAndRemoveExplicitVersion();
+
             new RestoreCommand()
                 .WithWorkingDirectory(rootPath)
                 .Execute($"--packages {packagesDirectory}")
                 .Should().Pass();
 
-            var expectedVersion = XDocument.Load(Path.Combine(rootPath, projectFileName))
-                .Elements("Project")
-                .Elements("PropertyGroup")
-                .Elements("NetStandardImplicitPackageVersion")
-                .FirstOrDefault()
-                ?.Value;
-
-            expectedVersion.Should().NotBeNullOrEmpty("Could not find NetStandardImplicitPackageVersion property in a new classlib.");
-
-            new DirectoryInfo(Path.Combine(packagesDirectory, "netstandard.library"))
+            new DirectoryInfo(Path.Combine(packagesDirectory, packageName))
                 .Should().Exist()
                 .And.HaveDirectory(expectedVersion);
+
+            string GetFrameworkPackageVersion()
+            {
+                var dotnetDir = new FileInfo(DotnetUnderTest.FullName).Directory;
+                var sharedFxDir = dotnetDir
+                    .GetDirectory("shared", "Microsoft.NETCore.App")
+                    .EnumerateDirectories()
+                    .Single(d => d.Name.StartsWith("2.0.0"));
+
+                if (packageName == "Microsoft.NETCore.App")
+                {
+                    return sharedFxDir.Name;
+                }
+
+                var depsFile = Path.Combine(sharedFxDir.FullName, "Microsoft.NETCore.App.deps.json");
+                using (var stream = File.OpenRead(depsFile))
+                using (var reader = new DependencyContextJsonReader())
+                {
+                    var context = reader.Read(stream);
+                    var dependency = context
+                        .RuntimeLibraries
+                        .Single(library => library.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase));
+
+                    return dependency.Version;
+                }
+            }
+
+            // Remove when templates stop putting an explicit version
+            void ValidateAndRemoveExplicitVersion()
+            {
+                var projectFileName = $"{projectName}.csproj";
+                var projectPath = Path.Combine(rootPath, projectFileName);
+                var projectDocument = XDocument.Load(projectPath);
+                var explicitVersionNode = projectDocument
+                   .Elements("Project")
+                   .Elements("PropertyGroup")
+                   .Elements(propertyName)
+                   .SingleOrDefault();
+
+                explicitVersionNode.Should().NotBeNull();
+                if (deleteExplicitVersion)
+                {
+                    explicitVersionNode.Remove();
+                    projectDocument.Save(projectPath);
+                }
+            }
         }
     }
 }