diff --git a/.appveyor.yml b/.appveyor.yml index d7f1764fd4..dd76f2f348 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -7,6 +7,7 @@ branches: - master - release - dev + - /^rel\/.*/ - /^(.*\/)?ci-.*$/ build_script: - ps: .\build.ps1 diff --git a/.gitignore b/.gitignore index a66c273871..507c2de6bf 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,3 @@ node_modules .testPublish/ .vscode global.json - diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..534619fc0c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "files.associations": { + "*.json.in": "json", + "*.*proj.in": "xml" + }, + "[json]": { + "editor.tabSize": 2 + } +} diff --git a/Directory.Build.props b/Directory.Build.props index e165c67fc6..7342d151e1 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,8 +1,10 @@ - - + + + - $(VersionSuffix)-$(BuildNumber) + false + true diff --git a/Directory.Build.targets b/Directory.Build.targets index 8296c12835..6f9d5b04d5 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,14 +1 @@ - - - - <_BootstrapperFile Condition=" $([MSBuild]::IsOSUnixLike()) ">build.sh - <_BootstrapperFile Condition="! $([MSBuild]::IsOSUnixLike()) ">build.cmd - <_BootstrapperError> - Package references have not been pinned. Run './$(_BootstrapperFile) /t:Pin'. - Also, you can run './$(_BootstrapperFile) /t:Restore' which will pin *and* restore packages. '$(_BootstrapperFile)' can be found in '$(MSBuildThisFileDirectory)'. - - - - - - + diff --git a/NuGet.config b/NuGet.config index 20060c934e..e32bddfd51 100644 --- a/NuGet.config +++ b/NuGet.config @@ -2,7 +2,6 @@ - - + diff --git a/TemplateDependencies.props b/TemplateDependencies.props deleted file mode 100644 index 3b5eb2c53a..0000000000 --- a/TemplateDependencies.props +++ /dev/null @@ -1,30 +0,0 @@ - - - - 2.0.0 - @(PackageReference->WithMetadataValue('Identity', 'Microsoft.AspNetCore')->Metadata('Version')) - 2.1.0-preview1-26751 - - - - - - - diff --git a/Templating.sln b/Templating.sln index 4c8aa513bd..2ef47027af 100644 --- a/Templating.sln +++ b/Templating.sln @@ -9,8 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.ItemTe EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TemplatePackages", "TemplatePackages", "{0AD6E692-E423-408C-B523-DAFB19412E4B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyUpdater", "tools\DependencyUpdater\DependencyUpdater.csproj", "{15806338-550D-4418-99AE-42FDAE03808A}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SpaTemplates", "src\Microsoft.AspNetCore.SpaTemplates\Microsoft.AspNetCore.SpaTemplates.csproj", "{01E12D5E-8540-4BC8-9A54-41EDD55E762E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.Spa.ProjectTemplates", "src\Microsoft.DotNet.Web.Spa.ProjectTemplates\Microsoft.DotNet.Web.Spa.ProjectTemplates.csproj", "{402E62D1-7FD0-4E07-812C-0E385D98D6D9}" @@ -19,10 +17,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.Client EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.ProjectTemplates", "src\Microsoft.DotNet.Web.ProjectTemplates\Microsoft.DotNet.Web.ProjectTemplates.csproj", "{260EBA09-DEF5-429C-99BF-90CA1456A576}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{973DC5B6-710B-4FC8-AF20-E94B93859DE8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PullRequestSubmitter", "tools\PullRequestSubmitter\PullRequestSubmitter.csproj", "{AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,10 +31,6 @@ Global {ABC9D95C-7FBD-4F8D-827A-00942EA3D0C0}.Debug|Any CPU.Build.0 = Debug|Any CPU {ABC9D95C-7FBD-4F8D-827A-00942EA3D0C0}.Release|Any CPU.ActiveCfg = Release|Any CPU {ABC9D95C-7FBD-4F8D-827A-00942EA3D0C0}.Release|Any CPU.Build.0 = Release|Any CPU - {15806338-550D-4418-99AE-42FDAE03808A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {15806338-550D-4418-99AE-42FDAE03808A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {15806338-550D-4418-99AE-42FDAE03808A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {15806338-550D-4418-99AE-42FDAE03808A}.Release|Any CPU.Build.0 = Release|Any CPU {01E12D5E-8540-4BC8-9A54-41EDD55E762E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {01E12D5E-8540-4BC8-9A54-41EDD55E762E}.Debug|Any CPU.Build.0 = Debug|Any CPU {01E12D5E-8540-4BC8-9A54-41EDD55E762E}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -57,22 +47,16 @@ Global {260EBA09-DEF5-429C-99BF-90CA1456A576}.Debug|Any CPU.Build.0 = Debug|Any CPU {260EBA09-DEF5-429C-99BF-90CA1456A576}.Release|Any CPU.ActiveCfg = Release|Any CPU {260EBA09-DEF5-429C-99BF-90CA1456A576}.Release|Any CPU.Build.0 = Release|Any CPU - {AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {ABC9D95C-7FBD-4F8D-827A-00942EA3D0C0} = {0AD6E692-E423-408C-B523-DAFB19412E4B} - {15806338-550D-4418-99AE-42FDAE03808A} = {973DC5B6-710B-4FC8-AF20-E94B93859DE8} {01E12D5E-8540-4BC8-9A54-41EDD55E762E} = {0AD6E692-E423-408C-B523-DAFB19412E4B} {402E62D1-7FD0-4E07-812C-0E385D98D6D9} = {0AD6E692-E423-408C-B523-DAFB19412E4B} {1731F6D9-1DFC-49D6-8F28-471194B1962C} = {0AD6E692-E423-408C-B523-DAFB19412E4B} {260EBA09-DEF5-429C-99BF-90CA1456A576} = {0AD6E692-E423-408C-B523-DAFB19412E4B} - {AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A} = {973DC5B6-710B-4FC8-AF20-E94B93859DE8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E9B27B0D-4F85-431B-9C26-80CFE4393D36} diff --git a/build/FixPackageOutputDirs.targets b/build/FixPackageOutputDirs.targets deleted file mode 100644 index bf6e3b7889..0000000000 --- a/build/FixPackageOutputDirs.targets +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - RedirectPackageOutputDir;$(PackageDependsOn);RestorePackageOutputDir - - - - - $(BuildDir) - $(BuildDir)unversioned\ - - - - - - $(OrigBuildDir) - - - diff --git a/build/dependencies.props b/build/dependencies.props new file mode 100644 index 0000000000..9a74f56ee8 --- /dev/null +++ b/build/dependencies.props @@ -0,0 +1,46 @@ + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + 2.1.0-preview1-15553 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 15.3.409 + 15.3.409 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 15.3.0 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.1.0-preview1-27424 + 2.0.0 + 2.0.0 + 0.19.0 + 3.6.0 + 16.16299.0 + 3.6.0 + 4.4.0 + 0.7.0 + 2.3.0 + 2.3.0 + + + + diff --git a/build/repo.props b/build/repo.props index 100a68ae64..b55e651b87 100644 --- a/build/repo.props +++ b/build/repo.props @@ -1,23 +1,7 @@ - - - - - - + - https://dotnet.myget.org/f/aspnetcore-ci-dev + + Internal.AspNetCore.Universe.Lineup + https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json - - - - $(RepositoryRoot).deps\lineups - - - - - diff --git a/build/repo.targets b/build/repo.targets deleted file mode 100644 index 552663d2a2..0000000000 --- a/build/repo.targets +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - $(MSBuildThisFileDirectory)..\tools\DependencyUpdater\bin\Release\netstandard2.0\DependencyUpdater.deps.json - $([System.IO.File]::ReadAllText('$(DepsFilePath)')) - $([System.Text.RegularExpressions.Regex]::Match($(DepsFileContent), `\s+"Microsoft.AspNetCore": "([^"]+)"`).Groups[1].Value) - - - - - - - - - - - diff --git a/build/sources.props b/build/sources.props new file mode 100644 index 0000000000..c03f3ddb60 --- /dev/null +++ b/build/sources.props @@ -0,0 +1,16 @@ + + + + + $(DotNetRestoreSources) + + $(RestoreSources); + https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json; + https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json; + + + $(RestoreSources); + https://api.nuget.org/v3/index.json; + + + diff --git a/korebuild-lock.txt b/korebuild-lock.txt index 79228b7e9e..3f5a1ec2c4 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:2.1.0-preview1-15552 -commithash:526c2d8d521343e5a29c2a1323925528cb94e873 +version:2.1.0-preview1-15553 +commithash:4af2f444ec8cba0faa866dd867370e6aa6df69ea diff --git a/korebuild.json b/korebuild.json new file mode 100644 index 0000000000..bd5d51a51b --- /dev/null +++ b/korebuild.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/dev/tools/korebuild.schema.json", + "channel": "dev" +} diff --git a/src/Directory.Build.props b/src/Directory.Build.props index fcb5752476..dfe4379d0b 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,31 +2,25 @@ + false False False False - False 2008;8021 - $(VersionPrefix) - $(VersionPrefix)-$(VersionSuffix) - $(MSBuildThisFileDirectory)..\artifacts\build\unversioned\ - version=$(PackageVersion) + - - true + + + true + $(MSBuildThisFileDirectory)..\artifacts\build\ - + + + + diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index b2edc5e726..0b5bb534e7 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -1,26 +1,10 @@ + + false + false + + - - - - - - - - - - - - - - + + diff --git a/src/GenerateContent.targets b/src/GenerateContent.targets new file mode 100644 index 0000000000..96251c178b --- /dev/null +++ b/src/GenerateContent.targets @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/.gitignore b/src/Microsoft.AspNetCore.SpaTemplates/.gitignore new file mode 100644 index 0000000000..dc70ec650b --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/.gitignore @@ -0,0 +1,2 @@ +# This file is generated by the build +content/*/*.*proj diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/KnockoutSpa.csproj b/src/Microsoft.AspNetCore.SpaTemplates/Aurelia-CSharp.csproj.in similarity index 85% rename from src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/KnockoutSpa.csproj rename to src/Microsoft.AspNetCore.SpaTemplates/Aurelia-CSharp.csproj.in index 22858ca3ba..f9921057ee 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/KnockoutSpa.csproj +++ b/src/Microsoft.AspNetCore.SpaTemplates/Aurelia-CSharp.csproj.in @@ -1,4 +1,4 @@ - + netcoreapp2.0 @@ -9,17 +9,17 @@ - + - - - - + + + + - + @@ -54,4 +54,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/VueSpa.csproj b/src/Microsoft.AspNetCore.SpaTemplates/Knockout-CSharp.csproj.in similarity index 85% rename from src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/VueSpa.csproj rename to src/Microsoft.AspNetCore.SpaTemplates/Knockout-CSharp.csproj.in index 22858ca3ba..f9921057ee 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/VueSpa.csproj +++ b/src/Microsoft.AspNetCore.SpaTemplates/Knockout-CSharp.csproj.in @@ -1,4 +1,4 @@ - + netcoreapp2.0 @@ -9,17 +9,17 @@ - + - - - - + + + + - + @@ -54,4 +54,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.csproj b/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.csproj index 456207cc1d..5a5bdc3b3a 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.csproj +++ b/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.csproj @@ -1,10 +1,35 @@ - - - + + netcoreapp2.0 Microsoft.AspNetCore.SpaTemplates.nuspec + + + + + + MicrosoftAspNetCoreAllPackageVersion=$(MicrosoftAspNetCoreAllPackageVersion); + MicrosoftAspNetCoreMvcPackageVersion=$(MicrosoftAspNetCoreMvcPackageVersion); + MicrosoftAspNetCorePackageVersion=$(MicrosoftAspNetCorePackageVersion); + MicrosoftAspNetCoreSpaServicesPackageVersion=$(MicrosoftAspNetCoreSpaServicesPackageVersion); + MicrosoftAspNetCoreStaticFilesPackageVersion=$(MicrosoftAspNetCoreStaticFilesPackageVersion); + MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion=$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion); + + + + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec b/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec index 4b4918b53b..158ac8296c 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec +++ b/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec @@ -17,9 +17,9 @@ - diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/ReactSpa.csproj b/src/Microsoft.AspNetCore.SpaTemplates/Vue-CSharp.csproj.in similarity index 85% rename from src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/ReactSpa.csproj rename to src/Microsoft.AspNetCore.SpaTemplates/Vue-CSharp.csproj.in index 22858ca3ba..f9921057ee 100644 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/ReactSpa.csproj +++ b/src/Microsoft.AspNetCore.SpaTemplates/Vue-CSharp.csproj.in @@ -1,4 +1,4 @@ - + netcoreapp2.0 @@ -9,17 +9,17 @@ - + - - - - + + + + - + @@ -54,4 +54,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json index 3b176af9f9..d6f128e26a 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json @@ -84,4 +84,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/Directory.Build.props b/src/Microsoft.AspNetCore.SpaTemplates/content/Directory.Build.props similarity index 100% rename from src/Microsoft.AspNetCore.SpaTemplates/Directory.Build.props rename to src/Microsoft.AspNetCore.SpaTemplates/content/Directory.Build.props diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Directory.Build.targets b/src/Microsoft.AspNetCore.SpaTemplates/content/Directory.Build.targets new file mode 100644 index 0000000000..0f803ab0e0 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Directory.Build.targets @@ -0,0 +1,7 @@ + + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json index 9e821a4f55..ef80d53bf9 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json @@ -84,4 +84,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json index 6cb8810d64..727ae230f8 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json @@ -84,4 +84,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/Microsoft.DotNet.Web.ItemTemplates/content/RazorPage/.template.config/template.json b/src/Microsoft.DotNet.Web.ItemTemplates/content/RazorPage/.template.config/template.json index 9eb2ad2304..c88a03a35b 100644 --- a/src/Microsoft.DotNet.Web.ItemTemplates/content/RazorPage/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ItemTemplates/content/RazorPage/.template.config/template.json @@ -47,7 +47,7 @@ "binding": "HostIdentifier" }, "NameIsPage": { - "type": "computed", + "type": "computed", "value": "(name == \"Page\")" } }, diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/.gitignore b/src/Microsoft.DotNet.Web.ProjectTemplates/.gitignore new file mode 100644 index 0000000000..dc70ec650b --- /dev/null +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/.gitignore @@ -0,0 +1,2 @@ +# This file is generated by the build +content/*/*.*proj diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/Company.WebApplication1.csproj b/src/Microsoft.DotNet.Web.ProjectTemplates/EmptyWeb-CSharp.csproj.in similarity index 67% rename from src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/Company.WebApplication1.csproj rename to src/Microsoft.DotNet.Web.ProjectTemplates/EmptyWeb-CSharp.csproj.in index ad90689b76..020b57bc6e 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/Company.WebApplication1.csproj +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/EmptyWeb-CSharp.csproj.in @@ -1,10 +1,10 @@ - + netcoreapp2.0 TargetFrameworkOverride - $(TemplateDep_RuntimeFramework_2_1) - $(TemplateDep_RuntimeFramework_2_1) + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} @@ -12,10 +12,10 @@ - + - + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/Company.WebApplication1.fsproj b/src/Microsoft.DotNet.Web.ProjectTemplates/EmptyWeb-FSharp.fsproj.in similarity index 69% rename from src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/Company.WebApplication1.fsproj rename to src/Microsoft.DotNet.Web.ProjectTemplates/EmptyWeb-FSharp.fsproj.in index dee04273a7..0fc60f74f1 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/Company.WebApplication1.fsproj +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/EmptyWeb-FSharp.fsproj.in @@ -1,10 +1,10 @@ - + netcoreapp2.0 TargetFrameworkOverride - TemplateDep_RuntimeFramework_2_1 - TemplateDep_RuntimeFramework_2_1 + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} @@ -13,7 +13,7 @@ - + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj b/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj index d3eb068f93..ad29b5d755 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj @@ -1,4 +1,6 @@ - + + + netcoreapp2.0 @@ -6,4 +8,58 @@ Microsoft.DotNet.Web.ProjectTemplates.nuspec + + + + + + MicrosoftAspNetCoreAllPackageVersion=$(MicrosoftAspNetCoreAllPackageVersion); + MicrosoftAspNetCoreAuthenticationCookiesPackageVersion=$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion); + MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion=$(MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion); + MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion=$(MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion); + MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion=$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion); + MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion=$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion); + MicrosoftAspNetCoreMvcPackageVersion=$(MicrosoftAspNetCoreMvcPackageVersion); + MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion=$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion); + MicrosoftAspNetCorePackageVersion=$(MicrosoftAspNetCorePackageVersion); + MicrosoftAspNetCoreStaticFilesPackageVersion=$(MicrosoftAspNetCoreStaticFilesPackageVersion); + MicrosoftEntityFrameworkCoreDesignPackageVersion=$(MicrosoftEntityFrameworkCoreDesignPackageVersion); + MicrosoftEntityFrameworkCoreSqlitePackageVersion=$(MicrosoftEntityFrameworkCoreSqlitePackageVersion); + MicrosoftEntityFrameworkCoreSqlServerPackageVersion=$(MicrosoftEntityFrameworkCoreSqlServerPackageVersion); + MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion=$(MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion); + MicrosoftEntityFrameworkCoreToolsPackageVersion=$(MicrosoftEntityFrameworkCoreToolsPackageVersion); + MicrosoftExtensionsSecretManagerToolsPackageVersion=$(MicrosoftExtensionsSecretManagerToolsPackageVersion); + MicrosoftVisualStudioWebBrowserLinkPackageVersion=$(MicrosoftVisualStudioWebBrowserLinkPackageVersion); + MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion=$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion); + MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion=$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion); + MicrosoftNETCoreApp20PackageVersion=$(MicrosoftNETCoreApp20PackageVersion); + NETStandardLibraryPackageVersion=$(NETStandardLibraryPackageVersion); + + + + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in b/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in new file mode 100644 index 0000000000..536c221829 --- /dev/null +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in @@ -0,0 +1,40 @@ + + + netcoreapp2.0 + TargetFrameworkOverride + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} + aspnet-Company.WebApplication1-0ce56475-d1db-490f-8af1-a881ea4fcd2d + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in new file mode 100644 index 0000000000..9ac27aea56 --- /dev/null +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in @@ -0,0 +1,47 @@ + + + + netcoreapp2.0 + TargetFrameworkOverride + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} + aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Company.WebApplication1.fsproj b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in similarity index 65% rename from src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Company.WebApplication1.fsproj rename to src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in index b749ab16e9..de2e78b7fc 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Company.WebApplication1.fsproj +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-FSharp.fsproj.in @@ -1,11 +1,10 @@ - + netcoreapp2.0 TargetFrameworkOverride - TemplateDep_RuntimeFramework_2_1 - TemplateDep_RuntimeFramework_2_1 - + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} true @@ -17,13 +16,13 @@ - + - - - - + + + + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/Company.WebApplication1.csproj b/src/Microsoft.DotNet.Web.ProjectTemplates/WebApi-CSharp.csproj.in similarity index 64% rename from src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/Company.WebApplication1.csproj rename to src/Microsoft.DotNet.Web.ProjectTemplates/WebApi-CSharp.csproj.in index 7c3f4b92b2..7d52f5e1d5 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/Company.WebApplication1.csproj +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/WebApi-CSharp.csproj.in @@ -1,11 +1,11 @@ - + netcoreapp2.0 TargetFrameworkOverride - $(TemplateDep_RuntimeFramework_2_1) - $(TemplateDep_RuntimeFramework_2_1) - + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} + aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502 0 1 @@ -16,17 +16,17 @@ - + - - - + + + - - + + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/Company.WebApplication1.fsproj b/src/Microsoft.DotNet.Web.ProjectTemplates/WebApi-FSharp.fsproj.in similarity index 67% rename from src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/Company.WebApplication1.fsproj rename to src/Microsoft.DotNet.Web.ProjectTemplates/WebApi-FSharp.fsproj.in index c3a6545cf1..f24338372f 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/Company.WebApplication1.fsproj +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/WebApi-FSharp.fsproj.in @@ -1,10 +1,10 @@ - + netcoreapp2.0 TargetFrameworkOverride - TemplateDep_RuntimeFramework_2_1 - TemplateDep_RuntimeFramework_2_1 + ${MicrosoftNETCoreApp20PackageVersion} + ${NETStandardLibraryPackageVersion} @@ -14,11 +14,11 @@ - + - - + + diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Directory.Build.props b/src/Microsoft.DotNet.Web.ProjectTemplates/content/Directory.Build.props similarity index 100% rename from src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Directory.Build.props rename to src/Microsoft.DotNet.Web.ProjectTemplates/content/Directory.Build.props diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/Directory.Build.targets b/src/Microsoft.DotNet.Web.ProjectTemplates/content/Directory.Build.targets new file mode 100644 index 0000000000..0f803ab0e0 --- /dev/null +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/Directory.Build.targets @@ -0,0 +1,7 @@ + + + + diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json index 3958a03289..922871b524 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-CSharp/.template.config/template.json @@ -1,7 +1,10 @@ { "$schema": "http://json.schemastore.org/template", "author": "Microsoft", - "classifications": ["Web", "Empty"], + "classifications": [ + "Web", + "Empty" + ], "name": "ASP.NET Core Empty", "generatorVersions": "[1.0.0.0-*)", "description": "An empty project template for creating an ASP.NET Core application. This template does not have any content in it.", @@ -16,16 +19,18 @@ }, "sourceName": "Company.WebApplication1", "preferNameDirectory": true, - "guids": [ "53bc9b9d-9d6a-45d4-8429-2a2761773502" ], + "guids": [ + "53bc9b9d-9d6a-45d4-8429-2a2761773502" + ], "sources": [ { - "modifiers": [ + "modifiers": [ { "condition": "(!IncludeLaunchSettings)", "exclude": [ "Properties/launchSettings.json" ] - }, + } ] } ], @@ -113,17 +118,23 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.csproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.csproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true } ] -} +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/template.json index 9e161cdcf2..7f0aff169d 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/EmptyWeb-FSharp/.template.config/template.json @@ -1,6 +1,9 @@ { "author": "Microsoft", - "classifications": ["Web", "Empty"], + "classifications": [ + "Web", + "Empty" + ], "name": "ASP.NET Core Empty", "generatorVersions": "[1.0.0.0-*)", "description": "An empty project template for creating an ASP.NET Core application. This template does not have any content in it.", @@ -57,17 +60,23 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.fsproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.fsproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true } ] -} +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.bowerrc b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.bowerrc deleted file mode 100644 index 6406626abf..0000000000 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "wwwroot/lib" -} diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/template.json index 58a8f79029..7e53fe179b 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/.template.config/template.json @@ -1,7 +1,11 @@ { "$schema": "http://json.schemastore.org/template", "author": "Microsoft", - "classifications": [ "Web", "MVC", "Razor Pages" ], + "classifications": [ + "Web", + "MVC", + "Razor Pages" + ], "name": "ASP.NET Core Web App", "generatorVersions": "[1.0.0.0-*)", "description": "A project template for creating an ASP.NET Core application with example ASP.NET Razor Pages content", @@ -33,7 +37,9 @@ }, { "condition": "(!IndividualLocalAuth || UseLocalDB)", - "exclude": [ "app.db" ] + "exclude": [ + "app.db" + ] }, { "condition": "(!IndividualLocalAuth)", @@ -353,14 +359,20 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.csproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.csproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Company.WebApplication1.csproj b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Company.WebApplication1.csproj deleted file mode 100644 index 15145bc768..0000000000 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Company.WebApplication1.csproj +++ /dev/null @@ -1,41 +0,0 @@ - - - netcoreapp2.0 - TargetFrameworkOverride - $(TemplateDep_RuntimeFramework_2_1) - $(TemplateDep_RuntimeFramework_2_1) - - aspnet-Company.WebApplication1-0ce56475-d1db-490f-8af1-a881ea4fcd2d - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/bower.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/bower.json deleted file mode 100644 index b07e3cc5ae..0000000000 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/RazorPagesWeb-CSharp/bower.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "asp.net", - "private": true, - "dependencies": { - "bootstrap": "3.3.7", - "jquery": "2.2.0", - "jquery-validation": "1.14.0", - "jquery-validation-unobtrusive": "3.2.6" - } -} diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.bowerrc b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.bowerrc deleted file mode 100644 index 6406626abf..0000000000 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "wwwroot/lib" -} diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/template.json index 3d6cb2c373..b25210b483 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/.template.config/template.json @@ -1,7 +1,10 @@ { "$schema": "http://json.schemastore.org/template", "author": "Microsoft", - "classifications": ["Web", "MVC"], + "classifications": [ + "Web", + "MVC" + ], "name": "ASP.NET Core Web App (Model-View-Controller)", "generatorVersions": "[1.0.0.0-*)", "description": "A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.", @@ -33,7 +36,9 @@ }, { "condition": "(!IndividualAuth || UseLocalDB)", - "exclude": [ "app.db" ] + "exclude": [ + "app.db" + ] }, { "condition": "(!IndividualLocalAuth)", @@ -328,14 +333,20 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.csproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.csproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Company.WebApplication1.csproj b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Company.WebApplication1.csproj deleted file mode 100644 index 247d6c4dc2..0000000000 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Company.WebApplication1.csproj +++ /dev/null @@ -1,48 +0,0 @@ - - - - netcoreapp2.0 - TargetFrameworkOverride - $(TemplateDep_RuntimeFramework_2_1) - $(TemplateDep_RuntimeFramework_2_1) - - aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502 - 0 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Index.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Index.cshtml index 00afab6a0c..f804781a31 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Index.cshtml +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Home/Index.cshtml @@ -36,7 +36,7 @@ Package Management @@ -81,7 +80,6 @@
  • Manage User Secrets using Secret Manager.
  • Use logging to log a message.
  • Add packages using NuGet.
  • -
  • Add client packages using Bower.
  • Target development, staging or production environment.
  • diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/bower.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/bower.json deleted file mode 100644 index b07e3cc5ae..0000000000 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-CSharp/bower.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "asp.net", - "private": true, - "dependencies": { - "bootstrap": "3.3.7", - "jquery": "2.2.0", - "jquery-validation": "1.14.0", - "jquery-validation-unobtrusive": "3.2.6" - } -} diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/.template.config/template.json index 4e7067b84a..78e922460d 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/.template.config/template.json @@ -1,7 +1,10 @@ { "$schema": "http://json.schemastore.org/template", "author": "Microsoft", - "classifications": ["Web", "MVC"], + "classifications": [ + "Web", + "MVC" + ], "name": "ASP.NET Core Web App (Model-View-Controller)", "generatorVersions": "[1.0.0.0-*)", "description": "A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.", @@ -58,17 +61,23 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.fsproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.fsproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true } ] -} +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Views/Home/Index.cshtml b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Views/Home/Index.cshtml index 00afab6a0c..f804781a31 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Views/Home/Index.cshtml +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/StarterWeb-FSharp/Views/Home/Index.cshtml @@ -36,7 +36,7 @@ Package Management @@ -81,7 +80,6 @@
  • Manage User Secrets using Secret Manager.
  • Use logging to log a message.
  • Add packages using NuGet.
  • -
  • Add client packages using Bower.
  • Target development, staging or production environment.
  • diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json index 152435cbbf..998747907e 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-CSharp/.template.config/template.json @@ -1,7 +1,10 @@ { "$schema": "http://json.schemastore.org/template", "author": "Microsoft", - "classifications": ["Web", "WebAPI"], + "classifications": [ + "Web", + "WebAPI" + ], "name": "ASP.NET Core Web API", "generatorVersions": "[1.0.0.0-*)", "description": "A project template for creating an ASP.NET Core application with an example Controller for a RESTful HTTP service. This template can also be used for ASP.NET Core MVC Views and Controllers.", @@ -268,14 +271,20 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.csproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.csproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true diff --git a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/.template.config/template.json index b4a3ef5706..e39880158e 100644 --- a/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.ProjectTemplates/content/WebApi-FSharp/.template.config/template.json @@ -1,6 +1,9 @@ { "author": "Microsoft", - "classifications": ["Web", "WebAPI"], + "classifications": [ + "Web", + "WebAPI" + ], "name": "ASP.NET Core Web API", "generatorVersions": "[1.0.0.0-*)", "description": "A project template for creating an ASP.NET Core application with an example Controller for a RESTful HTTP service. This template can also be used for ASP.NET Core MVC Views and Controllers.", @@ -57,17 +60,23 @@ "defaultValue": "false" } }, - "primaryOutputs": [ { "path": "Company.WebApplication1.fsproj" } ], + "primaryOutputs": [ + { + "path": "Company.WebApplication1.fsproj" + } + ], "defaultName": "WebApplication1", "postActions": [ { "condition": "(!skipRestore)", "description": "Restore NuGet packages required by this project.", "manualInstructions": [ - { "text": "Run 'dotnet restore'" } + { + "text": "Run 'dotnet restore'" + } ], "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", "continueOnError": true } ] -} +} \ No newline at end of file diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/.gitignore b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/.gitignore new file mode 100644 index 0000000000..dc70ec650b --- /dev/null +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/.gitignore @@ -0,0 +1,2 @@ +# This file is generated by the build +content/*/*.*proj diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/ReactReduxSpa.csproj b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Angular-CSharp.csproj.in similarity index 86% rename from src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/ReactReduxSpa.csproj rename to src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Angular-CSharp.csproj.in index 6bdf6b0cf9..2c5b3d549f 100644 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/ReactReduxSpa.csproj +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Angular-CSharp.csproj.in @@ -1,4 +1,4 @@ - + netcoreapp2.0 @@ -9,17 +9,17 @@ - + - - - - + + + + - + @@ -59,4 +59,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Directory.Build.targets b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Directory.Build.targets deleted file mode 100644 index fa98bfe809..0000000000 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Directory.Build.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.csproj b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.csproj index e4962abb4f..301175f1f7 100644 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.csproj +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.csproj @@ -1,10 +1,36 @@ - - - + + + netcoreapp2.0 Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec + + + + + + MicrosoftAspNetCoreAllPackageVersion=$(MicrosoftAspNetCoreAllPackageVersion); + MicrosoftAspNetCorePackageVersion=$(MicrosoftAspNetCorePackageVersion); + MicrosoftAspNetCoreMvcPackageVersion=$(MicrosoftAspNetCoreMvcPackageVersion); + MicrosoftAspNetCoreSpaServicesPackageVersion=$(MicrosoftAspNetCoreSpaServicesPackageVersion); + MicrosoftAspNetCoreStaticFilesPackageVersion=$(MicrosoftAspNetCoreStaticFilesPackageVersion); + MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion=$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion); + + + + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + $(GeneratedContentProperties) + + + diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec index 97fd7dd357..7edc9c7bb3 100644 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec @@ -17,9 +17,9 @@ - diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Angular-CSharp/AngularSpa.csproj b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/React-CSharp.csproj.in similarity index 86% rename from src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Angular-CSharp/AngularSpa.csproj rename to src/Microsoft.DotNet.Web.Spa.ProjectTemplates/React-CSharp.csproj.in index 6bdf6b0cf9..2c5b3d549f 100644 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Angular-CSharp/AngularSpa.csproj +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/React-CSharp.csproj.in @@ -1,4 +1,4 @@ - + netcoreapp2.0 @@ -9,17 +9,17 @@ - + - - - - + + + + - + @@ -59,4 +59,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/AureliaSpa.csproj b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/ReactRedux-CSharp.csproj.in similarity index 79% rename from src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/AureliaSpa.csproj rename to src/Microsoft.DotNet.Web.Spa.ProjectTemplates/ReactRedux-CSharp.csproj.in index 22858ca3ba..2c5b3d549f 100644 --- a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/AureliaSpa.csproj +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/ReactRedux-CSharp.csproj.in @@ -1,4 +1,4 @@ - + netcoreapp2.0 @@ -9,17 +9,22 @@ - + - - - - + + + + - + + + + + + @@ -46,7 +51,7 @@ - + %(DistFiles.Identity) PreserveNewest @@ -54,4 +59,4 @@ - \ No newline at end of file + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/Directory.Build.targets b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Directory.Build.props similarity index 100% rename from src/Microsoft.AspNetCore.SpaTemplates/Directory.Build.targets rename to src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Directory.Build.props diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Directory.Build.targets b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Directory.Build.targets new file mode 100644 index 0000000000..0f803ab0e0 --- /dev/null +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/Directory.Build.targets @@ -0,0 +1,7 @@ + + + + diff --git a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/template.json b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/template.json index 35efb5e670..a62f9300d3 100644 --- a/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/template.json +++ b/src/Microsoft.DotNet.Web.Spa.ProjectTemplates/content/React-CSharp/.template.config/template.json @@ -84,4 +84,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/src/SetPackageProperties.targets b/src/SetPackageProperties.targets new file mode 100644 index 0000000000..d98dae4333 --- /dev/null +++ b/src/SetPackageProperties.targets @@ -0,0 +1,10 @@ + + + + + $(NuspecProperties); + version=$(PackageVersion); + + + + diff --git a/test/Directory.Build.targets b/test/Directory.Build.targets new file mode 100644 index 0000000000..5baa2f8797 --- /dev/null +++ b/test/Directory.Build.targets @@ -0,0 +1,4 @@ + + + + diff --git a/test/GenerateTestProps.targets b/test/GenerateTestProps.targets new file mode 100644 index 0000000000..d23932f7c5 --- /dev/null +++ b/test/GenerateTestProps.targets @@ -0,0 +1,8 @@ + + + + + diff --git a/test/TemplateTests.props.in b/test/TemplateTests.props.in new file mode 100644 index 0000000000..9cd39793ff --- /dev/null +++ b/test/TemplateTests.props.in @@ -0,0 +1,7 @@ + + + true + ${RestoreSources} + ${RuntimeFrameworkVersion} + + diff --git a/test/Templates.Test/EmptyWebTemplateTest.cs b/test/Templates.Test/EmptyWebTemplateTest.cs index 528975424d..33f63f5eca 100644 --- a/test/Templates.Test/EmptyWebTemplateTest.cs +++ b/test/Templates.Test/EmptyWebTemplateTest.cs @@ -1,4 +1,8 @@ -using Xunit; +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Testing.xunit; +using Xunit; using Xunit.Abstractions; namespace Templates.Test @@ -9,10 +13,16 @@ namespace Templates.Test { } - [Theory] - [InlineData(null)] - [InlineData("net461")] - public void EmptyWebTemplate_Works(string targetFrameworkOverride) + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + public void EmptyWebTemplate_Works_NetFramework() + => EmptyWebTemplateImpl("net461"); + + [Fact] + public void EmptyWebTemplate_Works_NetCore() + => EmptyWebTemplateImpl(null); + + private void EmptyWebTemplateImpl(string targetFrameworkOverride) { RunDotNetNew("web", targetFrameworkOverride); diff --git a/test/Templates.Test/Helpers/AspNetProcess.cs b/test/Templates.Test/Helpers/AspNetProcess.cs index b1d20aeb04..454c89fc29 100644 --- a/test/Templates.Test/Helpers/AspNetProcess.cs +++ b/test/Templates.Test/Helpers/AspNetProcess.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Net; using System.Net.Http; +using Microsoft.Extensions.CommandLineUtils; using Xunit; using Xunit.Abstractions; @@ -30,7 +31,7 @@ namespace Templates.Test.Helpers { output.WriteLine("Publishing ASP.NET application..."); ProcessEx - .Run(output, workingDirectory, "dotnet", "publish -c Release") + .Run(output, workingDirectory, DotNetMuxer.MuxerPathOrDefault(), "publish -c Release") .WaitForExit(assertSuccess: true); workingDirectory = Path.Combine(workingDirectory, "bin", "Release", framework, "publish"); } @@ -38,7 +39,7 @@ namespace Templates.Test.Helpers { output.WriteLine("Building ASP.NET application..."); ProcessEx - .Run(output, workingDirectory, "dotnet", "build --no-restore -c Debug") + .Run(output, workingDirectory, DotNetMuxer.MuxerPathOrDefault(), "build --no-restore -c Debug") .WaitForExit(assertSuccess: true); } @@ -56,7 +57,7 @@ namespace Templates.Test.Helpers if (framework.StartsWith("netcore")) { var dllPath = publish ? $"{projectName}.dll" : $"bin/Debug/{framework}/{projectName}.dll"; - _process = ProcessEx.Run(output, workingDirectory, "dotnet", $"exec {dllPath}", envVars: envVars); + _process = ProcessEx.Run(output, workingDirectory, DotNetMuxer.MuxerPathOrDefault(), $"exec {dllPath}", envVars: envVars); } else { @@ -74,7 +75,7 @@ namespace Templates.Test.Helpers .FirstOrDefault(line => line.StartsWith(ListeningMessagePrefix, StringComparison.Ordinal)); Assert.True(!string.IsNullOrEmpty(listeningMessage), $"ASP.NET process exited without listening for requests.\nOutput: { _process.Output }\nError: { _process.Error }"); - // Verify we have a valid URL to make requests to + // Verify we have a valid URL to make requests to var listeningUrlString = listeningMessage.Substring(ListeningMessagePrefix.Length); _listeningUri = new Uri(listeningUrlString, UriKind.Absolute); output.WriteLine($"Detected that ASP.NET application is accepting connections on: {listeningUrlString}"); diff --git a/test/Templates.Test/Helpers/ProcessEx.cs b/test/Templates.Test/Helpers/ProcessEx.cs index da775c995f..e4e45351a0 100644 --- a/test/Templates.Test/Helpers/ProcessEx.cs +++ b/test/Templates.Test/Helpers/ProcessEx.cs @@ -35,6 +35,7 @@ namespace Templates.Test.Helpers } } + output.WriteLine($"==> {startInfo.FileName} {startInfo.Arguments} [{startInfo.WorkingDirectory}]"); var proc = Process.Start(startInfo); return new ProcessEx(output, proc); diff --git a/test/Templates.Test/Helpers/TemplatePackageInstaller.cs b/test/Templates.Test/Helpers/TemplatePackageInstaller.cs index d85a5bd02d..72eeeddad5 100644 --- a/test/Templates.Test/Helpers/TemplatePackageInstaller.cs +++ b/test/Templates.Test/Helpers/TemplatePackageInstaller.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using Microsoft.Extensions.CommandLineUtils; using Xunit.Abstractions; namespace Templates.Test.Helpers @@ -38,8 +39,8 @@ namespace Templates.Test.Helpers { var proc = ProcessEx.Run( output, - Directory.GetCurrentDirectory(), - "dotnet", + AppContext.BaseDirectory, + DotNetMuxer.MuxerPathOrDefault(), $"new --uninstall {packageName}"); // We don't need this command to succeed, because we'll verify next that @@ -61,8 +62,8 @@ namespace Templates.Test.Helpers output.WriteLine($"Installing templates package {packagePath}..."); var proc = ProcessEx.Run( output, - Directory.GetCurrentDirectory(), - "dotnet", + AppContext.BaseDirectory, + DotNetMuxer.MuxerPathOrDefault(), $"new --install \"{packagePath}\""); proc.WaitForExit(assertSuccess: true); } @@ -72,7 +73,7 @@ namespace Templates.Test.Helpers private static void VerifyCannotFindTemplate(ITestOutputHelper output, string templateName) { // Verify we really did remove the previous templates - var tempDir = Path.Combine(Directory.GetCurrentDirectory(), Guid.NewGuid().ToString("D")); + var tempDir = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName(), Guid.NewGuid().ToString("D")); Directory.CreateDirectory(tempDir); try @@ -80,9 +81,11 @@ namespace Templates.Test.Helpers var proc = ProcessEx.Run( output, tempDir, - "dotnet", + DotNetMuxer.MuxerPathOrDefault(), $"new \"{templateName}\""); - proc.WaitForExit(assertSuccess: false); + + proc.WaitForExit(assertSuccess: false); + if (!proc.Error.Contains($"No templates matched the input template name: {templateName}.")) { throw new InvalidOperationException($"Failed to uninstall previous templates. The template '{templateName}' could still be found."); @@ -90,13 +93,13 @@ namespace Templates.Test.Helpers } finally { - Directory.Delete(tempDir); + Directory.Delete(tempDir, recursive: true); } } private static string FindAncestorDirectoryContaining(string filename) { - var dir = Directory.GetCurrentDirectory(); + var dir = AppContext.BaseDirectory; while (dir != null) { if (File.Exists(Path.Combine(dir, filename))) @@ -107,7 +110,7 @@ namespace Templates.Test.Helpers dir = Directory.GetParent(dir)?.FullName; } - throw new InvalidOperationException($"Could not find any ancestor directory containing {filename} at or above {Directory.GetCurrentDirectory()}"); + throw new InvalidOperationException($"Could not find any ancestor directory containing {filename} at or above {AppContext.BaseDirectory}"); } } } diff --git a/test/Templates.Test/Helpers/TemplateTestBase.cs b/test/Templates.Test/Helpers/TemplateTestBase.cs index 8b28d81f71..54854d6c75 100644 --- a/test/Templates.Test/Helpers/TemplateTestBase.cs +++ b/test/Templates.Test/Helpers/TemplateTestBase.cs @@ -1,7 +1,12 @@ -using System; +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; using System.IO; using System.Reflection; +using System.Runtime.InteropServices; using System.Threading; +using Microsoft.Extensions.CommandLineUtils; using Templates.Test.Helpers; using Xunit; using Xunit.Abstractions; @@ -30,7 +35,7 @@ namespace Templates.Test // We don't want any of the host repo's build config interfering with // how the test project is built, so disconnect it from the // Directory.Build.props/targets context - File.WriteAllText(Path.Combine(TemplateOutputDir, "Directory.Build.props"), ""); + File.WriteAllText(Path.Combine(TemplateOutputDir, "Directory.Build.props"), ""); File.WriteAllText(Path.Combine(TemplateOutputDir, "Directory.Build.targets"), ""); } @@ -58,7 +63,7 @@ namespace Templates.Test args += $" -lang {language}"; } - ProcessEx.Run(Output, TemplateOutputDir, "dotnet", args).WaitForExit(assertSuccess: true); + ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), args).WaitForExit(assertSuccess: true); } protected void RunNpmInstall() @@ -66,7 +71,10 @@ namespace Templates.Test // The first time this runs on any given CI agent it may take several minutes. // If the agent has NPM 5+ installed, it should be quite a lot quicker on // subsequent runs because of package caching. - ProcessEx.Run(Output, TemplateOutputDir, "cmd", "/c \"npm install\"").WaitForExit(assertSuccess: true); + var (exe, args) = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? ("cmd", "/c") + : ("bash", "-c"); + ProcessEx.Run(Output, TemplateOutputDir, exe, args + " \"npm install\"").WaitForExit(assertSuccess: true); } protected void AssertDirectoryExists(string path, bool shouldExist) diff --git a/test/Templates.Test/MvcTemplateTest.cs b/test/Templates.Test/MvcTemplateTest.cs index 9b5e5a3f1f..fdc51a4cec 100644 --- a/test/Templates.Test/MvcTemplateTest.cs +++ b/test/Templates.Test/MvcTemplateTest.cs @@ -1,4 +1,8 @@ -using Xunit; +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Testing.xunit; +using Xunit; using Xunit.Abstractions; namespace Templates.Test @@ -9,12 +13,20 @@ namespace Templates.Test { } + [ConditionalTheory] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + [InlineData(null)] + [InlineData("F#")] + public void MvcTemplate_NoAuth_Works_NetFramework(string languageOverride) + => MvcTemplate_NoAuthImpl("net461", languageOverride); + [Theory] - [InlineData(/* netcoreapp */ null, /* C# */ null)] - [InlineData("net461", /* C# */ null)] - [InlineData(/* netcoreapp */ null, "F#")] - [InlineData("net461", "F#")] - public void MvcTemplate_NoAuth_Works(string targetFrameworkOverride, string languageOverride) + [InlineData(null)] + [InlineData("F#")] + public void MvcTemplate_NoAuth_Works_NetCore(string languageOverride) + => MvcTemplate_NoAuthImpl(null, languageOverride); + + private void MvcTemplate_NoAuthImpl(string targetFrameworkOverride, string languageOverride) { RunDotNetNew("mvc", targetFrameworkOverride, language: languageOverride); @@ -42,13 +54,19 @@ namespace Templates.Test } } - [Theory] - [InlineData(null)] - [InlineData("net461")] - public void MvcTemplate_IndividualAuth_Works(string targetFrameworkOverride) + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + public void MvcTemplate_IndividualAuth_Works_NetFramework() + => MvcTemplate_IndividualAuthImpl("net461"); + + [Fact] + public void MvcTemplate_IndividualAuth_Works_NetCore() + => MvcTemplate_IndividualAuthImpl(null); + + private void MvcTemplate_IndividualAuthImpl(string targetFrameworkOverride) { RunDotNetNew("mvc", targetFrameworkOverride, auth: "Individual"); - + AssertDirectoryExists("Extensions", false); AssertFileExists("urlRewrite.config", false); AssertFileExists("Controllers/AccountController.cs", true); diff --git a/test/Templates.Test/Properties/TestAttributes.cs b/test/Templates.Test/Properties/TestAttributes.cs new file mode 100644 index 0000000000..69295a81d1 --- /dev/null +++ b/test/Templates.Test/Properties/TestAttributes.cs @@ -0,0 +1,4 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +[assembly: Xunit.CollectionBehavior(DisableTestParallelization = true)] diff --git a/test/Templates.Test/RazorPagesTemplateTest.cs b/test/Templates.Test/RazorPagesTemplateTest.cs index 48e88b4142..7d7ef64873 100644 --- a/test/Templates.Test/RazorPagesTemplateTest.cs +++ b/test/Templates.Test/RazorPagesTemplateTest.cs @@ -1,4 +1,8 @@ -using Xunit; +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Testing.xunit; +using Xunit; using Xunit.Abstractions; namespace Templates.Test @@ -9,13 +13,19 @@ namespace Templates.Test { } - [Theory] - [InlineData(null)] - [InlineData("net461")] - public void RazorPagesTemplate_NoAuth_Works(string targetFrameworkOverride) + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + public void RazorPagesTemplate_NoAuth_Works_NetFramework() + => RazorPagesTemplate_NoAuthImpl("net461"); + + [Fact] + public void RazorPagesTemplate_NoAuth_Works_NetCore() + => RazorPagesTemplate_NoAuthImpl(null); + + private void RazorPagesTemplate_NoAuthImpl(string targetFrameworkOverride) { RunDotNetNew("razor", targetFrameworkOverride); - + AssertDirectoryExists("Extensions", false); AssertFileExists("Controllers/AccountController.cs", false); @@ -37,10 +47,16 @@ namespace Templates.Test } } - [Theory] - [InlineData(null)] - [InlineData("net461")] - public void RazorPagesTemplate_IndividualAuth_Works(string targetFrameworkOverride) + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + public void RazorPagesTemplate_IndividualAuth_Works_NetFramework() + => RazorPagesTemplate_IndividualAuthImpl("net461"); + + [Fact] + public void RazorPagesTemplate_IndividualAuth_Works_NetCore() + => RazorPagesTemplate_IndividualAuthImpl(null); + + private void RazorPagesTemplate_IndividualAuthImpl(string targetFrameworkOverride) { RunDotNetNew("razor", targetFrameworkOverride, auth: "Individual"); diff --git a/test/Templates.Test/SpaTemplateTest.cs b/test/Templates.Test/SpaTemplateTest.cs index 8095c76899..44efcf9423 100644 --- a/test/Templates.Test/SpaTemplateTest.cs +++ b/test/Templates.Test/SpaTemplateTest.cs @@ -1,4 +1,8 @@ -using OpenQA.Selenium; +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Testing.xunit; +using OpenQA.Selenium; using Templates.Test.Helpers; using Xunit; using Xunit.Abstractions; @@ -11,17 +15,25 @@ namespace Templates.Test { } - [Theory] - [InlineData(null, "angular")] - [InlineData(null, "react")] - [InlineData(null, "reactredux")] - [InlineData(null, "aurelia")] - [InlineData(null, "knockout")] - [InlineData(null, "vue")] + [ConditionalTheory] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] // Just use 'angular' as representative for .NET 4.6.1 coverage, as // the client-side code isn't affected by the .NET runtime choice - [InlineData("net461", "angular")] - public void SpaTemplate_Works(string targetFrameworkOverride, string template) + [InlineData("angular")] + public void SpaTemplate_Works_NetFramework(string template) + => SpaTemplateImpl("net461", template); + + [Theory] + [InlineData("angular")] + [InlineData("react")] + [InlineData("reactredux")] + [InlineData("aurelia")] + [InlineData("knockout")] + [InlineData("vue")] + public void SpaTemplate_Works_NetCore(string template) + => SpaTemplateImpl(null, template); + + private void SpaTemplateImpl(string targetFrameworkOverride, string template) { RunDotNetNew(template, targetFrameworkOverride); RunNpmInstall(); diff --git a/test/Templates.Test/Templates.Test.csproj b/test/Templates.Test/Templates.Test.csproj index cd8306c6d1..d93039022c 100644 --- a/test/Templates.Test/Templates.Test.csproj +++ b/test/Templates.Test/Templates.Test.csproj @@ -2,22 +2,21 @@ netcoreapp2.0 - - - true - - - - - - - - - - + + + + + + + + + + + + diff --git a/test/Templates.Test/WebApiTemplateTest.cs b/test/Templates.Test/WebApiTemplateTest.cs index 2d2ed57a39..53d562037e 100644 --- a/test/Templates.Test/WebApiTemplateTest.cs +++ b/test/Templates.Test/WebApiTemplateTest.cs @@ -1,4 +1,8 @@ -using Xunit; +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Testing.xunit; +using Xunit; using Xunit.Abstractions; namespace Templates.Test @@ -9,10 +13,16 @@ namespace Templates.Test { } - [Theory] - [InlineData(null)] - [InlineData("net461")] - public void WebApiTemplate_Works(string targetFrameworkOverride) + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX)] + public void WebApiTemplate_Works_NetFramework() + => WebApiTemplateImpl("net461"); + + [Fact] + public void WebApiTemplate_Works_NetCore() + => WebApiTemplateImpl(null); + + private void WebApiTemplateImpl(string targetFrameworkOverride) { RunDotNetNew("webapi", targetFrameworkOverride); diff --git a/tools/DependencyUpdater/DependencyUpdater.csproj b/tools/DependencyUpdater/DependencyUpdater.csproj deleted file mode 100644 index 0beb5f36be..0000000000 --- a/tools/DependencyUpdater/DependencyUpdater.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - netstandard2.0 - Library - false - - - - - - - \ No newline at end of file diff --git a/tools/DependencyUpdater/SubstituteProjectFileVariables.cs b/tools/DependencyUpdater/SubstituteProjectFileVariables.cs deleted file mode 100644 index e1c6676bba..0000000000 --- a/tools/DependencyUpdater/SubstituteProjectFileVariables.cs +++ /dev/null @@ -1,88 +0,0 @@ -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using System; -using System.IO; -using System.IO.Compression; -using System.Linq; - -namespace DependencyUpdater -{ - public class SubstituteProjectFileVariables : Task - { - private static string[] ProjectFileExtensions = new[] - { - ".csproj", - ".fsproj" - }; - - [Required] public string NupkgFile { get; set; } - [Required] public string OutDir { get; set; } - [Required] public ITaskItem[] Substitutions { get; set; } - - public override bool Execute() - { - // We can't modify the .nupkg in place because the build system still - // has a lock on the file. We can read it, but not write it. So copy - // to the output location and then modify the copy. - var outFile = Path.Combine(OutDir, Path.GetFileName(NupkgFile)); - File.Copy(NupkgFile, outFile, true); - - var numProjectFiles = 0; - using (var zipFile = ZipFile.Open(outFile, ZipArchiveMode.Update)) - { - foreach (var projectFile in zipFile.Entries.Where(IsProjectFile)) - { - numProjectFiles++; - PerformVariableSubstitutions(projectFile); - } - } - - if (numProjectFiles == 0) - { - Log.LogMessage( - MessageImportance.High, - $"No project files found in {Path.GetFileName(outFile)}, so no variables substituted."); - } - else - { - Log.LogMessage( - MessageImportance.High, - $"Substituted variables in {numProjectFiles} project file(s) in {Path.GetFileName(outFile)}"); - } - - return true; - } - - private static bool IsProjectFile(ZipArchiveEntry entry) - { - return ProjectFileExtensions.Any( - extension => Path.GetExtension(entry.Name).Equals(extension, StringComparison.OrdinalIgnoreCase)); - } - - private void PerformVariableSubstitutions(ZipArchiveEntry entry) - { - using (var fileStream = entry.Open()) - { - string contents; - using (var reader = new StreamReader(fileStream)) - using (var writer = new StreamWriter(fileStream)) - { - contents = reader.ReadToEnd(); - fileStream.Seek(0, SeekOrigin.Begin); - fileStream.SetLength(0); - writer.Write(SubstituteVariables(contents)); - } - } - } - - private string SubstituteVariables(string text) - { - foreach (var item in Substitutions) - { - text = text.Replace($"$({item.ItemSpec})", item.GetMetadata("Value")); - } - - return text; - } - } -} diff --git a/tools/PullRequestSubmitter/Helpers/GitHubUtil.cs b/tools/PullRequestSubmitter/Helpers/GitHubUtil.cs deleted file mode 100644 index 538bfe4fc5..0000000000 --- a/tools/PullRequestSubmitter/Helpers/GitHubUtil.cs +++ /dev/null @@ -1,161 +0,0 @@ -using Octokit; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; - -namespace PullRequestSubmitter.Helpers -{ - static class GitHubUtil - { - public static async Task> GetEditsToCommit( - GitHubClient client, Repository upstreamRepo, string baseSha, - IEnumerable propertyUpdates) - { - // Find the file to update - var existingTree = await client.Git.Tree.GetRecursive(upstreamRepo.Id, baseSha); - - // Update the files' contents - var result = new Dictionary(); - var filesToUpdate = propertyUpdates.GroupBy(p => p.Filename); - foreach (var fileToUpdate in filesToUpdate) - { - var fileContents = await GetFileContentsAsString( - client, upstreamRepo, existingTree.Tree, fileToUpdate.Key); - - foreach (var propToUpdate in fileToUpdate) - { - var propName = propToUpdate.PropertyName; - var patternToReplace = new Regex($"<{propName}>[^<]+"); - if (!patternToReplace.IsMatch(fileContents)) - { - throw new Exception($"The file {fileToUpdate.Key} does not contain a match for regex " + patternToReplace.ToString()); - } - - fileContents = patternToReplace.Replace( - fileContents, - $"<{propName}>{propToUpdate.NewValue}"); - } - - var newBlob = new NewBlob { Content = fileContents, Encoding = EncodingType.Utf8 }; - result.Add(fileToUpdate.Key, newBlob); - } - - return result; - } - - public static async Task GetLatestCommitSha( - GitHubClient client, Repository repo, string branchName) - { - var commitRef = await client.Git.Reference.Get( - repo.Id, - $"heads/{branchName}"); - return commitRef.Object.Sha; - } - - public static async Task CommitModifiedFiles( - GitHubClient client, Repository toRepo, string toBranchName, string parentCommitSha, - IDictionary modifiedFiles, string commitMessage) - { - // Build and commit a new tree representing the updated state - var newTree = new NewTree { BaseTree = parentCommitSha }; - foreach (var kvp in modifiedFiles) - { - newTree.Tree.Remove(new NewTreeItem { Path = kvp.Key }); - newTree.Tree.Add(new NewTreeItem() - { - Type = TreeType.Blob, - Mode = "100644", - Sha = (await client.Git.Blob.Create(toRepo.Id, kvp.Value)).Sha, - Path = kvp.Key - }); - } - var createdTree = await client.Git.Tree.Create(toRepo.Id, newTree); - var commit = await client.Git.Commit.Create( - toRepo.Id, - new NewCommit(commitMessage, createdTree.Sha, parentCommitSha)); - - // Update the target branch to point to the new commit - await client.Git.Reference.Update( - toRepo.Id, - $"heads/{toBranchName}", - new ReferenceUpdate(commit.Sha, force: true)); - - return commit.Sha; - } - - public static async Task FindExistingPullRequestToUpdate( - GitHubClient client, User currentUser, Repository upstreamRepo, - Repository forkRepo, string forkBranch) - { - // Search for candidate PRs (same author, still open, etc.) - var fromBaseRef = $"{forkRepo.Owner.Login}:{forkBranch}"; - var searchInRepos = new RepositoryCollection(); - searchInRepos.Add(upstreamRepo.Owner.Login, upstreamRepo.Name); - var searchRequest = new SearchIssuesRequest - { - Repos = searchInRepos, - Type = IssueTypeQualifier.PullRequest, - Author = currentUser.Login, - State = ItemState.Open - }; - var searchResults = await client.Search.SearchIssues(searchRequest); - - // Of the candidates, find the highest-numbered one that is requesting a - // pull from the same fork and branch. GitHub only allows there to be one - // of these at any given time, but we're more likely to find it faster - // by searching from newest to oldest. - var candidates = searchResults.Items.OrderByDescending(item => item.Number); - foreach (var prInfo in candidates) - { - var pr = await client.PullRequest.Get(upstreamRepo.Id, prInfo.Number); - if (pr.Head?.Repository?.Id == forkRepo.Id && pr.Head?.Ref == forkBranch) - { - return prInfo; - } - } - - return null; - } - - public static async Task CreateNewPullRequest( - GitHubClient client, Repository upstreamRepo, string upstreamBranch, - Repository forkRepo, string forkBranch, string prBodyText) - { - var fromBaseRef = $"{forkRepo.Owner.Login}:{forkBranch}"; - var newPr = new NewPullRequest( - prBodyText, - fromBaseRef, - upstreamBranch); - return await client.PullRequest.Create(upstreamRepo.Id, newPr); - } - - public static async Task UpdateExistingPullRequestTitle( - GitHubClient client, Repository upstreamRepo, int prNumber, string newTitle) - { - var updateInfo = new PullRequestUpdate { Title = newTitle }; - await client.PullRequest.Update(upstreamRepo.Id, prNumber, updateInfo); - } - - private static async Task GetFileContentsAsString( - GitHubClient client, Repository repo, IReadOnlyList tree, string path) - { - var existingFile = tree.FirstOrDefault(item => item.Path == path); - var blob = await client.Git.Blob.Get(repo.Id, existingFile.Sha); - - switch (blob.Encoding.Value) - { - case EncodingType.Utf8: - return blob.Content; - case EncodingType.Base64: - return Encoding.UTF8.GetString(Convert.FromBase64String(blob.Content)); - default: - throw new InvalidDataException($"Unsupported encoding: {blob.Encoding.StringValue}"); - } - } - } -} diff --git a/tools/PullRequestSubmitter/Helpers/PropertyUpdate.cs b/tools/PullRequestSubmitter/Helpers/PropertyUpdate.cs deleted file mode 100644 index 7f96cde2f5..0000000000 --- a/tools/PullRequestSubmitter/Helpers/PropertyUpdate.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace PullRequestSubmitter.Helpers -{ - class PropertyUpdate - { - public string Filename { get; set; } - public string PropertyName { get; set; } - public string NewValue { get; set; } - } -} diff --git a/tools/PullRequestSubmitter/PullRequestSubmitter.csproj b/tools/PullRequestSubmitter/PullRequestSubmitter.csproj deleted file mode 100644 index 0cf93739cd..0000000000 --- a/tools/PullRequestSubmitter/PullRequestSubmitter.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - netcoreapp2.0 - true - - - - - - - - - diff --git a/tools/PullRequestSubmitter/PullRequestTask.cs b/tools/PullRequestSubmitter/PullRequestTask.cs deleted file mode 100644 index 7420b04c72..0000000000 --- a/tools/PullRequestSubmitter/PullRequestTask.cs +++ /dev/null @@ -1,105 +0,0 @@ -using Microsoft.Build.Framework; -using Octokit; -using PullRequestSubmitter.Helpers; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace PullRequestSubmitter -{ - public class PullRequestTask : Microsoft.Build.Utilities.Task - { - [Required] public string ApiToken { get; set; } - [Required] public string UpstreamRepoOwner { get; set; } - [Required] public string UpstreamRepoName { get; set; } - [Required] public string UpstreamRepoBranch { get; set; } - [Required] public string ForkRepoName { get; set; } - [Required] public string ForkRepoBranch { get; set; } - [Required] public string Message { get; set; } - [Required] public string FileToUpdate { get; set; } - [Required] public ITaskItem[] PropertyUpdates { get; set; } - - public override bool Execute() - { - return ExecuteAsync().Result; - } - - private IEnumerable GetPropertyUpdates() - { - return PropertyUpdates.Select(item => new PropertyUpdate - { - Filename = FileToUpdate, - PropertyName = item.ItemSpec, - NewValue = item.GetMetadata("NewValue") - }); - } - - private async Task ExecuteAsync() - { - var client = new GitHubClient(new ProductHeaderValue("PullRequestSubmitter")) - { - Credentials = new Credentials(ApiToken), - }; - - // Find the upstream repo and determine what edits we want to make - LogHigh($"Finding upstream repo: {UpstreamRepoOwner}/{UpstreamRepoName}..."); - var upstreamRepo = await client.Repository.Get(UpstreamRepoOwner, UpstreamRepoName); - var upstreamCommitSha = await GitHubUtil.GetLatestCommitSha(client, upstreamRepo, UpstreamRepoBranch); - LogHigh($"Found upstream commit to update: {upstreamCommitSha} ({UpstreamRepoBranch})"); - var editsToCommit = await GitHubUtil.GetEditsToCommit( - client, upstreamRepo, upstreamCommitSha, GetPropertyUpdates()); - if (editsToCommit.Any()) - { - var filesList = string.Join('\n', - editsToCommit.Select(e => " - " + e.Key)); - LogHigh($"Will apply edits to file(s):\n{filesList}"); - } - else - { - Log.LogError("Found no edits to apply. Aborting."); - return false; - } - - // Commit the edits into the fork repo, updating its head to point to a new tree - // formed by updating the tree from the upstream SHA - var currentUser = await client.User.Current(); - LogHigh($"Finding fork repo: {currentUser.Login}/{ForkRepoName}..."); - var forkRepo = await client.Repository.Get(currentUser.Login, ForkRepoName); - var newCommitSha = await GitHubUtil.CommitModifiedFiles( - client, - forkRepo, - ForkRepoBranch, - upstreamCommitSha, - editsToCommit, - Message); - LogHigh($"Committed edits. {currentUser.Login}/{ForkRepoName} branch {ForkRepoBranch} is now at {newCommitSha}"); - - // If applicable, submit a new PR - LogHigh($"Checking if there is already an open PR we can update..."); - var prToUpdate = await GitHubUtil.FindExistingPullRequestToUpdate( - client, currentUser, upstreamRepo, forkRepo, ForkRepoBranch); - if (prToUpdate == null) - { - LogHigh($"No existing open PR found. Creating new PR..."); - var newPr = await GitHubUtil.CreateNewPullRequest( - client, upstreamRepo, UpstreamRepoBranch, forkRepo, ForkRepoBranch, Message); - LogHigh($"Created pull request #{newPr.Number} at {newPr.HtmlUrl}"); - } - else - { - LogHigh($"Found existing PR #{prToUpdate.Number}. Updating details..."); - await GitHubUtil.UpdateExistingPullRequestTitle( - client, upstreamRepo, prToUpdate.Number, Message); - LogHigh($"Finished updating PR #{prToUpdate.Number} at {prToUpdate.HtmlUrl}"); - } - - return true; - } - - private void LogHigh(string message) - { - Log.LogMessage(MessageImportance.High, message); - } - } -} diff --git a/version.props b/version.props new file mode 100644 index 0000000000..fba7f0e9b9 --- /dev/null +++ b/version.props @@ -0,0 +1,11 @@ + + + 2.1.0 + preview1 + $(VersionPrefix) + $(VersionPrefix)-$(VersionSuffix)-final + t000 + $(VersionSuffix)-$(BuildNumber) + $(VersionSuffix)+$(VersionMetadata) + + diff --git a/version.xml b/version.xml deleted file mode 100644 index b2c5cfd0fa..0000000000 --- a/version.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - dev - 2.1.0 - preview1 - - \ No newline at end of file