Automate dependency version selection

- Generate the template config file to include package versions as listed in dependencies.props
 - Update template cs/fsproj files to use variables per package
 - Fixup tests to run better on Linux/macOS
This commit is contained in:
Nate McMaster 2017-10-11 11:26:41 -07:00
parent 4d9bacd3f1
commit 5541615008
77 changed files with 1500 additions and 517 deletions

8
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"files.associations": {
"*.json.in": "json"
},
"[json]": {
"editor.tabSize": 2
}
}

View File

@ -1,4 +1,3 @@
<Project>
<Import Project="version.props" />
<Import Project="TemplateDependencies.props" />
</Project>

View File

@ -1,4 +1,5 @@
<Project>
<Import Project="build\sources.props" />
<!-- This is imported at the bottom of the file so properties such as RuntimeFrameworkVersion can be set based on TargetFramework -->
<Import Project="build\dependencies.props" />
</Project>

View File

@ -2,7 +2,6 @@
<configuration>
<packageSources>
<clear />
<add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
<!-- Restore sources should be defined in build/sources.props. -->
</packageSources>
</configuration>

View File

@ -1,30 +0,0 @@
<Project>
<PropertyGroup>
<!--
These version strings are stamped into the template nupkg packages
when the template projects are packed. Plus these dependency versions
are used if you run the template projects directly from source.
If you add a new entry here, be sure to add a corresponding <Substitution>
item into ./src/Directory.Build.targets, otherwise your value won't be
stamped into the built template nupkg files.
Entries whose values are taken from @(PackageReference->...) are using
whatever version is present in the latest package lineup. These dynamic
values can be replaced by hardcoded values (e.g., '2.1.0') when we
branch for a release.
-->
<TemplateDep_Coherence_2_0>2.0.0</TemplateDep_Coherence_2_0>
<TemplateDep_Coherence_2_1>@(PackageReference->WithMetadataValue('Identity', 'Microsoft.AspNetCore')->Metadata('Version'))</TemplateDep_Coherence_2_1>
<TemplateDep_RuntimeFramework_2_1>2.1.0-preview1-26751</TemplateDep_RuntimeFramework_2_1>
</PropertyGroup>
<ItemGroup>
<!--
These references are here only so that KoreBuild will locate the applicable
version in the current lineup and we can then access those versions in the
code above.
-->
<PackageReference Include="Microsoft.AspNetCore" />
</ItemGroup>
</Project>

View File

@ -1,20 +1,16 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.16
VisualStudioVersion = 15.0.27004.2002
MinimumVisualStudioVersion = 15.0.26124.0
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Templates.Test", "test\Templates.Test\Templates.Test.csproj", "{D43A4D24-D514-44C2-9438-54F6EDF58680}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.ItemTemplates", "src\Microsoft.DotNet.Web.ItemTemplates\Microsoft.DotNet.Web.ItemTemplates.csproj", "{ABC9D95C-7FBD-4F8D-827A-00942EA3D0C0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.ProjectTemplates.1.x", "src\Microsoft.DotNet.Web.ProjectTemplates.1.x\Microsoft.DotNet.Web.ProjectTemplates.1.x.csproj", "{B8EB8821-9B58-465A-9693-5F9289AA7B29}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.ProjectTemplates.2.0", "src\Microsoft.DotNet.Web.ProjectTemplates.2.0\Microsoft.DotNet.Web.ProjectTemplates.2.0.csproj", "{62D00388-8824-4661-8CC8-8D8436FF97E6}"
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}"
@ -23,7 +19,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Web.Client
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}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PullRequestSubmitter", "tools\PullRequestSubmitter\PullRequestSubmitter.csproj", "{AFF8B079-5BA1-4DA8-9EAF-BEC8414F889A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{68B3AFBD-1A32-41D0-9AA8-F1FFEA3BB5F9}"
ProjectSection(SolutionItems) = preProject
test\Directory.Build.targets = test\Directory.Build.targets
test\GenerateTestProps.targets = test\GenerateTestProps.targets
test\TemplateTests.props.in = test\TemplateTests.props.in
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -39,18 +42,10 @@ 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
{B8EB8821-9B58-465A-9693-5F9289AA7B29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8EB8821-9B58-465A-9693-5F9289AA7B29}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8EB8821-9B58-465A-9693-5F9289AA7B29}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8EB8821-9B58-465A-9693-5F9289AA7B29}.Release|Any CPU.Build.0 = Release|Any CPU
{62D00388-8824-4661-8CC8-8D8436FF97E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62D00388-8824-4661-8CC8-8D8436FF97E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62D00388-8824-4661-8CC8-8D8436FF97E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62D00388-8824-4661-8CC8-8D8436FF97E6}.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
@ -72,10 +67,9 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D43A4D24-D514-44C2-9438-54F6EDF58680} = {68B3AFBD-1A32-41D0-9AA8-F1FFEA3BB5F9}
{ABC9D95C-7FBD-4F8D-827A-00942EA3D0C0} = {0AD6E692-E423-408C-B523-DAFB19412E4B}
{B8EB8821-9B58-465A-9693-5F9289AA7B29} = {0AD6E692-E423-408C-B523-DAFB19412E4B}
{62D00388-8824-4661-8CC8-8D8436FF97E6} = {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}

View File

@ -103,11 +103,11 @@ function Get-KoreBuild {
}
}
catch {
remove-item -Recurse -Force $korebuildPath -ErrorAction Ignore
Remove-Item -Recurse -Force $korebuildPath -ErrorAction Ignore
throw
}
finally {
remove-item $tmpfile -ErrorAction Ignore
Remove-Item $tmpfile -ErrorAction Ignore
}
}

0
build.sh Normal file → Executable file
View File

View File

@ -1,33 +0,0 @@
<Project>
<!--
The "Pack" target which emits .nupkg files to disk also holds a lock on those file
until the whole build process exits [1]. This makes it difficult to perform any
subsequent work on the package files, such as moving them or modifying their
contents. As a workaround, we cause the nupkgs to be written to a temporary
subdirectory, and then after they are emitted, our SubstituteProjectFileVariables
task writes its output to the original intended build directory.
[1] The file locking might be a bug in the NuGet client code. For example, see
https://github.com/NuGet/NuGet.Client/blob/63e8539791d4f662efffceb2185ad4510396d76e/src/NuGet.Core/NuGet.Commands/CommandRunners/PackCommandRunner.cs#L135
It opens a "PackageArchiveReader" (which in turn uses File.Open to open a file
handle) after creating each package, but never close/disposes it.
-->
<PropertyGroup>
<PackageDependsOn>RedirectPackageOutputDir;$(PackageDependsOn);RestorePackageOutputDir</PackageDependsOn>
</PropertyGroup>
<Target Name="RedirectPackageOutputDir">
<PropertyGroup>
<OrigBuildDir>$(BuildDir)</OrigBuildDir>
<BuildDir>$(BuildDir)unversioned\</BuildDir>
</PropertyGroup>
</Target>
<Target Name="RestorePackageOutputDir">
<PropertyGroup>
<BuildDir>$(OrigBuildDir)</BuildDir>
</PropertyGroup>
</Target>
</Project>

View File

@ -1,10 +1,37 @@
<Project>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
<PropertyGroup Label="PackageVersions">
<InternalAspNetCoreSdkPackageVersion>2.0.2-beta-15522</InternalAspNetCoreSdkPackageVersion>
<MicrosoftAspNetCoreAllPackageVersion>2.0.3-rtm-101</MicrosoftAspNetCoreAllPackageVersion>
<MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
<MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>
<MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion>
<MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>
<MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
<MicrosoftAspNetCoreMvcPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreMvcPackageVersion>
<MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion>
<MicrosoftAspNetCorePackageVersion>2.0.1-rtm-101</MicrosoftAspNetCorePackageVersion>
<MicrosoftAspNetCoreSpaServicesPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreSpaServicesPackageVersion>
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.0.1-rtm-101</MicrosoftAspNetCoreStaticFilesPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>2.0.0</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftBuildFrameworkPackageVersion>15.3.409</MicrosoftBuildFrameworkPackageVersion>
<MicrosoftBuildUtilitiesCorePackageVersion>15.3.409</MicrosoftBuildUtilitiesCorePackageVersion>
<MicrosoftEntityFrameworkCoreDesignPackageVersion>2.0.1-rtm-101</MicrosoftEntityFrameworkCoreDesignPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>2.0.1-rtm-101</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.0.1-rtm-101</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion>2.0.1-rtm-101</MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>2.0.1-rtm-101</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.0.0</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
<MicrosoftExtensionsSecretManagerToolsPackageVersion>2.0.0</MicrosoftExtensionsSecretManagerToolsPackageVersion>
<MicrosoftNETTestSdkPackageVersion>15.3.0</MicrosoftNETTestSdkPackageVersion>
<MicrosoftVisualStudioWebBrowserLinkPackageVersion>2.0.1-rtm-101</MicrosoftVisualStudioWebBrowserLinkPackageVersion>
<MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion>2.0.1-rtm-101</MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion>
<MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion>2.0.1-rtm-101</MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion>
<OctokitPackageVersion>0.26.0</OctokitPackageVersion>
<RuntimeFrameworkVersion Condition="'$(TargetFramework)' == 'netcoreapp2.0'">2.0.2-servicing-25728-02</RuntimeFrameworkVersion>
<SeleniumFirefoxWebDriverPackageVersion>0.18.0</SeleniumFirefoxWebDriverPackageVersion>
<SeleniumSupportPackageVersion>3.4.0</SeleniumSupportPackageVersion>
<SeleniumWebDriverMicrosoftDriverPackageVersion>15.15063.0</SeleniumWebDriverMicrosoftDriverPackageVersion>

View File

@ -1,6 +1,4 @@
<Project>
<Import Project="FixPackageOutputDirs.targets" />
<UsingTask
TaskName="PullRequestSubmitter.PullRequestTask"
AssemblyFile="$(MSBuildThisFileDirectory)..\tools\PullRequestSubmitter\bin\Release\netcoreapp2.0\PullRequestSubmitter.dll" />
@ -30,5 +28,4 @@
FileToUpdate="build/DependencyVersions.props"
PropertyUpdates="@(PropertyUpdate)" />
</Target>
</Project>

View File

@ -1,7 +1,7 @@
<Project>
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
<PropertyGroup>
<PropertyGroup Label="RestoreSources">
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
$(RestoreSources);

View File

@ -1,2 +1,2 @@
version:2.0.2-beta-15522
commithash:f26cb086ebd8b5a187381bb9a431794f11d69025
version:2.0.2-rc1-15526
commithash:436afc3dc08f5e278431db807866cc5f032f4d7b

View File

@ -2,31 +2,26 @@
<Import Project="..\Directory.Build.props" />
<PropertyGroup>
<EnableApiCheck>false</EnableApiCheck>
<EnableDefaultItems>False</EnableDefaultItems>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<IncludeBuildOutput>False</IncludeBuildOutput>
<IncludeSource>False</IncludeSource>
<NoWarn>2008;8021</NoWarn>
<PackageVersion Condition="'$(VersionSuffix)' == ''">$(VersionPrefix)</PackageVersion>
<PackageVersion Condition="'$(VersionSuffix)' != ''">$(VersionPrefix)-$(VersionSuffix)</PackageVersion>
<PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(MSBuildThisFileDirectory)..\artifacts\build\unversioned\</PackageOutputPath>
<NuspecProperties>version=$(PackageVersion)</NuspecProperties>
</PropertyGroup>
<!--
These are not regular projects. They are just wrappers for the .nuspec files in each
of the template directories. The project files just provide a convenient way to package
the template .nupkgs from MSBuild.
As such, the projects don't have any dependencies and don't even produce any
.NET assemblies on build. So it's not relevant to participate in KoreBuild's lineup
system. The following line bypasses lineup verification.
-->
<KoreBuildRestoreTargetsImported>true</KoreBuildRestoreTargetsImported>
<PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == 'true'">
<!-- So you can make changes and re-run tests within VS without command-line builds -->
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageOutputPath>$(MSBuildThisFileDirectory)..\artifacts\build\</PackageOutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="$(MSBuildThisFileDirectory)../tools/DependencyUpdater/DependencyUpdater.csproj" />
<None Include="Content/**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" PrivateAssets="All" />
</ItemGroup>
</Project>

View File

@ -1,26 +1,5 @@
<Project>
<Import Project="..\Directory.Build.targets" />
<!--
Once we've written each template .nupkg file, we modify the ASP.NET references
in its .csproj content files, injecting whatever version number exists in
the curent build context.
-->
<UsingTask
TaskName="DependencyUpdater.SubstituteProjectFileVariables"
AssemblyFile="$(MSBuildProjectDirectory)\$(OutputPath)DependencyUpdater.dll" />
<Target Name="InjectVersionsIntoProjectFilesInPackage" AfterTargets="Pack">
<ItemGroup>
<Substitution Include="TemplateDep_Coherence_2_0" Value="$(TemplateDep_Coherence_2_0)" />
<Substitution Include="TemplateDep_Coherence_2_1" Value="$(TemplateDep_Coherence_2_1)" />
<Substitution Include="TemplateDep_RuntimeFramework_2_1" Value="$(TemplateDep_RuntimeFramework_2_1)" />
</ItemGroup>
<SubstituteProjectFileVariables
NupkgFile="$(PackageOutputPath)$(MSBuildProjectName).$(PackageVersion).nupkg"
Substitutions="@(Substitution)"
OutDir="$(PackageOutputPath)..\" />
</Target>
<Import Project="GenerateContent.targets" />
<Import Project="SetPackageProperties.targets" />
</Project>

View File

@ -0,0 +1,29 @@
<Project>
<!--
Generates content using MSBuild variables.
-->
<Target Name="_PrepareGeneratedContentFilesOutput">
<Error Text="You must set OutputPath on GenerateContent items." Condition="@(GeneratedContent->WithMetadataValue('OutputPath','')->Count()) != 0" />
<ItemGroup>
<GenerateContentInputs Include="$(MSBuildAllProjects);$(MSBuildProjectFullPath)" />
<GeneratedContentOutputs Include="%(GeneratedContent.OutputPath)" />
</ItemGroup>
</Target>
<Target Name="GenerateContent"
DependsOnTargets="_PrepareGeneratedContentFilesOutput"
BeforeTargets="CoreCompile"
Inputs="@(GeneratedContent);@(GenerateContentInputs)"
Outputs="@(GeneratedContentOutputs)">
<Sdk_GenerateFileFromTemplate
TemplateFile="%(GeneratedContent.Identity)"
Properties="%(GeneratedContent.Properties)"
OutputPath="%(GeneratedContent.OutputPath)">
<Output TaskParameter="OutputPath" ItemName="FileWrites" />
<Output TaskParameter="OutputPath" ItemName="Content" />
</Sdk_GenerateFileFromTemplate>
</Target>
</Project>

View File

@ -0,0 +1,2 @@
# This file is generated by the build
content/*/.template.config/template.json

View File

@ -55,6 +55,60 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreSpaServicesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.SpaServices",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreSpaServicesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreSpaServicesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"tags": {
@ -84,4 +138,4 @@
]
}
]
}
}

View File

@ -55,6 +55,60 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreSpaServicesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.SpaServices",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreSpaServicesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreSpaServicesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"tags": {
@ -84,4 +138,4 @@
]
}
]
}
}

View File

@ -1,10 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Directory.Build.props" />
<Import Project="..\Directory.Build.targets" />
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<NuspecFile>Microsoft.AspNetCore.SpaTemplates.nuspec</NuspecFile>
</PropertyGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<!-- Set this last to ensure the properties get the final versions which may be overridden by CI. -->
<PropertyGroup>
<GeneratedContentProperties>
MicrosoftAspNetCoreAllPackageVersion=$(MicrosoftAspNetCoreAllPackageVersion);
MicrosoftAspNetCoreMvcPackageVersion=$(MicrosoftAspNetCoreMvcPackageVersion);
MicrosoftAspNetCorePackageVersion=$(MicrosoftAspNetCorePackageVersion);
MicrosoftAspNetCoreSpaServicesPackageVersion=$(MicrosoftAspNetCoreSpaServicesPackageVersion);
MicrosoftAspNetCoreStaticFilesPackageVersion=$(MicrosoftAspNetCoreStaticFilesPackageVersion);
MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion=$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion);
</GeneratedContentProperties>
</PropertyGroup>
<ItemGroup>
<GeneratedContent Include="Aurelia-CSharp.template.json.in" OutputPath="content\Aurelia-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="Knockout-CSharp.template.json.in" OutputPath="content\Knockout-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="Vue-CSharp.template.json.in" OutputPath="content\Vue-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
</ItemGroup>
</Project>

View File

@ -17,9 +17,9 @@
</packageTypes>
</metadata>
<files>
<file
<file
src="content/**/*"
exclude="**/node_modules/**;**/bin/**;**/obj/**;**/.vs/**;**/.vscode/**;**/ClientApp/dist/**;**/wwwroot/dist/**"
exclude="**/node_modules/**;**/bin/**;**/obj/**;**/.vs/**;**/.vscode/**;**/ClientApp/dist/**;**/wwwroot/dist/**;content/Directory.Build.*"
target="Content" />
</files>
</package>

View File

@ -55,6 +55,60 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreSpaServicesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.SpaServices",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreSpaServicesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreSpaServicesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"tags": {
@ -84,4 +138,4 @@
]
}
]
}
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -9,17 +9,17 @@
</PropertyGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(MicrosoftAspNetCoreSpaServicesPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
<!--/-:cnd:noEmit -->
@ -54,4 +54,4 @@
</ItemGroup>
</Target>
</Project>
</Project>

View File

@ -0,0 +1,7 @@
<Project>
<Import Project="..\..\..\Directory.Build.targets" />
<!--
This file intentionally left mostly blank to ensure the template projects
are independent from the template package build config.
-->
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -9,17 +9,17 @@
</PropertyGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(MicrosoftAspNetCoreSpaServicesPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
<!--/-:cnd:noEmit -->
@ -54,4 +54,4 @@
</ItemGroup>
</Target>
</Project>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -9,17 +9,17 @@
</PropertyGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(MicrosoftAspNetCoreSpaServicesPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
<!--/-:cnd:noEmit -->
@ -54,4 +54,4 @@
</ItemGroup>
</Target>
</Project>
</Project>

View File

@ -1,6 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Disable producing this package from the rel/2.0.x branch -->
<IsPackable>false</IsPackable>
<TargetFramework>netcoreapp2.0</TargetFramework>
<NuspecFile>Microsoft.DotNet.Web.ProjectTemplates.1.x.nuspec</NuspecFile>
</PropertyGroup>

View File

@ -0,0 +1,2 @@
# This file is generated by the build
content/*/.template.config/template.json

View File

@ -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"
]
},
}
]
}
],
@ -105,16 +110,40 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
}
},
"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

View File

@ -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.",
@ -49,16 +52,31 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
}
},
"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

View File

@ -1,8 +1,62 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<NuspecFile>Microsoft.DotNet.Web.ProjectTemplates.2.0.nuspec</NuspecFile>
</PropertyGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<!-- Set this last to ensure the properties get the final versions which may be overridden by CI. -->
<PropertyGroup>
<GeneratedContentProperties>
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);
</GeneratedContentProperties>
</PropertyGroup>
<ItemGroup>
<GeneratedContent Include="EmptyWeb-CSharp.template.json.in" OutputPath="content\EmptyWeb-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="EmptyWeb-FSharp.template.json.in" OutputPath="content\EmptyWeb-FSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="RazorPagesWeb-CSharp.template.json.in" OutputPath="content\RazorPagesWeb-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="StarterWeb-CSharp.template.json.in" OutputPath="content\StarterWeb-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="StarterWeb-FSharp.template.json.in" OutputPath="content\StarterWeb-FSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="WebApi-CSharp.template.json.in" OutputPath="content\WebApi-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="WebApi-FSharp.template.json.in" OutputPath="content\WebApi-FSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
</ItemGroup>
</Project>

View File

@ -17,6 +17,9 @@
</packageTypes>
</metadata>
<files>
<file src="content/**" target="" />
<file
src="content/**/*"
exclude="**/node_modules/**;**/bin/**;**/obj/**;**/.vs/**;**/.vscode/**;**/ClientApp/dist/**;**/wwwroot/dist/**;content/Directory.Build.*"
target="" />
</files>
</package>

View File

@ -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)",
@ -345,16 +351,184 @@
"type": "parameter",
"datatype": "bool",
"defaultValue": "false"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreAuthenticationCookiesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Authentication.Cookies",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAuthenticationCookiesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftEntityFrameworkCoreSqlitePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Sqlite",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreSqlitePackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreSqlitePackageVersion)"
},
"MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion)"
},
"MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Identity.EntityFrameworkCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion)"
},
"MicrosoftEntityFrameworkCoreSqlServerPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.SqlServer",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreSqlServerPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreSqlServerPackageVersion)"
},
"MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Authentication.OpenIdConnect",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion)"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftVisualStudioWebBrowserLinkPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.BrowserLink",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebBrowserLinkPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebBrowserLinkPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Design",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)"
},
"MicrosoftEntityFrameworkCoreDesignPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Design",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreDesignPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreDesignPackageVersion)"
},
"MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc.Razor.ViewCompilation",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion)"
},
"MicrosoftEntityFrameworkCoreToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreToolsPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
},
"MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Tools.DotNet",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion)"
},
"MicrosoftExtensionsSecretManagerToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.Extensions.SecretManager.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftExtensionsSecretManagerToolsPackageVersion}"
},
"replaces": "$(MicrosoftExtensionsSecretManagerToolsPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
}
},
"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

View File

@ -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)",
@ -339,16 +344,184 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreAuthenticationCookiesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Authentication.Cookies",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAuthenticationCookiesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftEntityFrameworkCoreSqlitePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Sqlite",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreSqlitePackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreSqlitePackageVersion)"
},
"MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion)"
},
"MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Identity.EntityFrameworkCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion)"
},
"MicrosoftEntityFrameworkCoreSqlServerPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.SqlServer",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreSqlServerPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreSqlServerPackageVersion)"
},
"MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Authentication.OpenIdConnect",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion)"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftVisualStudioWebBrowserLinkPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.BrowserLink",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebBrowserLinkPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebBrowserLinkPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Design",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)"
},
"MicrosoftEntityFrameworkCoreDesignPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Design",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreDesignPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreDesignPackageVersion)"
},
"MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc.Razor.ViewCompilation",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion)"
},
"MicrosoftEntityFrameworkCoreToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreToolsPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
},
"MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.EntityFrameworkCore.Tools.DotNet",
"generator": "constant",
"parameters": {
"value": "${MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion}"
},
"replaces": "$(MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion)"
},
"MicrosoftExtensionsSecretManagerToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.Extensions.SecretManager.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftExtensionsSecretManagerToolsPackageVersion}"
},
"replaces": "$(MicrosoftExtensionsSecretManagerToolsPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
}
},
"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

View File

@ -0,0 +1,122 @@
{
"$schema": "http://json.schemastore.org/template",
"author": "Microsoft",
"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.",
"groupIdentity": "Microsoft.Web.Mvc",
"precedence": "2000",
"identity": "Microsoft.Web.Mvc.FSharp.2.0",
"shortName": "mvc",
"thirdPartyNotices": "https://aka.ms/template-3pn",
"tags": {
"language": "F#",
"type": "project"
},
"sourceName": "Company.WebApplication1",
"preferNameDirectory": true,
"symbols": {
"TargetFrameworkOverride": {
"type": "parameter",
"description": "Overrides the target framework",
"replaces": "TargetFrameworkOverride",
"datatype": "string",
"defaultValue": ""
},
"Framework": {
"type": "parameter",
"description": "The target framework for the project.",
"datatype": "choice",
"choices": [
{
"choice": "netcoreapp2.0",
"description": "Target netcoreapp2.0"
}
],
"replaces": "netcoreapp2.0",
"defaultValue": "netcoreapp2.0"
},
"copyrightYear": {
"type": "generated",
"generator": "now",
"replaces": "1975",
"parameters": {
"format": "yyyy"
}
},
"skipRestore": {
"type": "parameter",
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc.Razor.ViewCompilation",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"primaryOutputs": [
{
"path": "Company.WebApplication1.fsproj"
}
],
"defaultName": "WebApplication1",
"postActions": [
{
"condition": "(!skipRestore)",
"description": "Restore NuGet packages required by this project.",
"manualInstructions": [
{
"text": "Run 'dotnet restore'"
}
],
"actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
"continueOnError": true
}
]
}

View File

@ -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.",
@ -260,16 +263,76 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftExtensionsSecretManagerToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.Extensions.SecretManager.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftExtensionsSecretManagerToolsPackageVersion}"
},
"replaces": "$(MicrosoftExtensionsSecretManagerToolsPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Authentication.JwtBearer",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"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

View File

@ -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.",
@ -49,16 +52,49 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"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

View File

@ -0,0 +1,7 @@
<Project>
<Import Project="..\..\..\Directory.Build.targets" />
<!--
This file intentionally left mostly blank to ensure the template projects
are independent from the template package build config.
-->
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -10,10 +10,10 @@
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -11,7 +11,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
<TargetFramework Condition="'$(TargetFrameworkOverride)' != ''">TargetFrameworkOverride</TargetFramework>
@ -10,29 +10,29 @@
<None Update="app.db" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCoreToolsPackageVersion)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(TemplateDep_Coherence_2_0)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' != 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(TemplateDep_Coherence_2_0)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" Condition="'$(UseBrowserLink)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion)" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion)" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCoreDesignPackageVersion)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(MicrosoftEntityFrameworkCoreSqlitePackageVersion)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' != 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(MicrosoftEntityFrameworkCoreSqlServerPackageVersion)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCoreToolsPackageVersion)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="$(MicrosoftVisualStudioWebBrowserLinkPackageVersion)" Condition="'$(UseBrowserLink)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
</ItemGroup>
<ItemGroup Condition="'$(NoTools)' != 'True'">
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="$(MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="$(MicrosoftExtensionsSecretManagerToolsPackageVersion)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -15,31 +15,31 @@
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCoreToolsPackageVersion)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(TemplateDep_Coherence_2_0)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' != 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(TemplateDep_Coherence_2_0)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" Condition="'$(UseBrowserLink)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="$(MicrosoftAspNetCoreAuthenticationCookiesPackageVersion)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCoreAuthenticationOpenIdConnectPackageVersion)" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="$(MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion)" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCoreDesignPackageVersion)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(MicrosoftEntityFrameworkCoreSqlitePackageVersion)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' != 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(MicrosoftEntityFrameworkCoreSqlServerPackageVersion)" Condition=" '$(IndividualLocalAuth)' == 'True' AND '$(UseLocalDB)' == 'True'" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCoreToolsPackageVersion)" PrivateAssets="All" Condition="'$(IndividualLocalAuth)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="$(MicrosoftVisualStudioWebBrowserLinkPackageVersion)" Condition="'$(UseBrowserLink)' == 'True'" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="$(MicrosoftVisualStudioWebCodeGenerationDesignPackageVersion)" PrivateAssets="All" Condition="'$(IndividualAuth)' == 'True'" />
</ItemGroup>
<ItemGroup Condition="'$(NoTools)' != 'True'">
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="$(MicrosoftEntityFrameworkCoreToolsDotNetPackageVersion)" Condition="'$(IndividualLocalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="$(MicrosoftExtensionsSecretManagerToolsPackageVersion)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -1,68 +0,0 @@
{
"$schema": "http://json.schemastore.org/template",
"author": "Microsoft",
"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.",
"groupIdentity": "Microsoft.Web.Mvc",
"precedence": "2000",
"identity": "Microsoft.Web.Mvc.FSharp.2.0",
"shortName": "mvc",
"thirdPartyNotices": "https://aka.ms/template-3pn",
"tags": {
"language": "F#",
"type": "project"
},
"sourceName": "Company.WebApplication1",
"preferNameDirectory": true,
"symbols":{
"TargetFrameworkOverride": {
"type": "parameter",
"description": "Overrides the target framework",
"replaces": "TargetFrameworkOverride",
"datatype": "string",
"defaultValue": ""
},
"Framework": {
"type": "parameter",
"description": "The target framework for the project.",
"datatype": "choice",
"choices": [
{
"choice": "netcoreapp2.0",
"description": "Target netcoreapp2.0"
}
],
"replaces": "netcoreapp2.0",
"defaultValue": "netcoreapp2.0"
},
"copyrightYear": {
"type": "generated",
"generator": "now",
"replaces": "1975",
"parameters": {
"format": "yyyy"
}
},
"skipRestore": {
"type": "parameter",
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
}
},
"primaryOutputs": [ { "path": "Company.WebApplication1.fsproj" } ],
"defaultName": "WebApplication1",
"postActions": [
{
"condition": "(!skipRestore)",
"description": "Restore NuGet packages required by this project.",
"manualInstructions": [
{ "text": "Run 'dotnet restore'" }
],
"actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
"continueOnError": true
}
]
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -14,13 +14,13 @@
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="$(TemplateDep_Coherence_2_0)" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="$(MicrosoftAspNetCoreMvcRazorViewCompilationPackageVersion)" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -13,17 +13,17 @@
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(TemplateDep_Coherence_2_0)" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion)" Condition="'$(OrganizationalAuth)' == 'True' OR '$(IndividualB2CAuth)' == 'True'" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="$(MicrosoftExtensionsSecretManagerToolsPackageVersion)" Condition="'$(IndividualAuth)' == 'True' OR '$(OrganizationalAuth)' == 'True'" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -12,11 +12,11 @@
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_0)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,2 @@
# This file is generated by the build
content/*/.template.config/template.json

View File

@ -55,6 +55,60 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreSpaServicesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.SpaServices",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreSpaServicesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreSpaServicesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"tags": {
@ -84,4 +138,4 @@
]
}
]
}
}

View File

@ -1,6 +0,0 @@
<Project>
<!--
This file intentionally left blank to ensure the template projects
are independent from the template package build config.
-->
</Project>

View File

@ -1,10 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Directory.Build.props" />
<Import Project="..\Directory.Build.targets" />
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<NuspecFile>Microsoft.DotNet.Web.Spa.ProjectTemplates.nuspec</NuspecFile>
</PropertyGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<!-- Set this last to ensure the properties get the final versions which may be overridden by CI. -->
<PropertyGroup>
<GeneratedContentProperties>
MicrosoftAspNetCoreAllPackageVersion=$(MicrosoftAspNetCoreAllPackageVersion);
MicrosoftAspNetCorePackageVersion=$(MicrosoftAspNetCorePackageVersion);
MicrosoftAspNetCoreMvcPackageVersion=$(MicrosoftAspNetCoreMvcPackageVersion);
MicrosoftAspNetCoreSpaServicesPackageVersion=$(MicrosoftAspNetCoreSpaServicesPackageVersion);
MicrosoftAspNetCoreStaticFilesPackageVersion=$(MicrosoftAspNetCoreStaticFilesPackageVersion);
MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion=$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion);
</GeneratedContentProperties>
</PropertyGroup>
<ItemGroup>
<GeneratedContent Include="Angular-CSharp.template.json.in" OutputPath="content\Angular-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="React-CSharp.template.json.in" OutputPath="content\React-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
<GeneratedContent Include="ReactRedux-CSharp.template.json.in" OutputPath="content\ReactRedux-CSharp\.template.config\template.json">
<Properties>$(GeneratedContentProperties)</Properties>
</GeneratedContent>
</ItemGroup>
</Project>

View File

@ -17,9 +17,9 @@
</packageTypes>
</metadata>
<files>
<file
<file
src="content/**/*"
exclude="**/node_modules/**;**/bin/**;**/obj/**;**/.vs/**;**/.vscode/**;**/ClientApp/dist/**;**/wwwroot/dist/**"
exclude="**/node_modules/**;**/bin/**;**/obj/**;**/.vs/**;**/.vscode/**;**/ClientApp/dist/**;**/wwwroot/dist/**;content/Directory.Build.*"
target="Content" />
</files>
</package>

View File

@ -55,6 +55,60 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreSpaServicesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.SpaServices",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreSpaServicesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreSpaServicesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"tags": {
@ -84,4 +138,4 @@
]
}
]
}
}

View File

@ -55,6 +55,60 @@
"datatype": "bool",
"description": "If specified, skips the automatic restore of the project on create.",
"defaultValue": "false"
},
"MicrosoftAspNetCoreAllPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.All",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreAllPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreAllPackageVersion)"
},
"MicrosoftAspNetCorePackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCorePackageVersion}"
},
"replaces": "$(MicrosoftAspNetCorePackageVersion)"
},
"MicrosoftAspNetCoreStaticFilesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.StaticFiles",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreStaticFilesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreStaticFilesPackageVersion)"
},
"MicrosoftAspNetCoreSpaServicesPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.SpaServices",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreSpaServicesPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreSpaServicesPackageVersion)"
},
"MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.VisualStudio.Web.CodeGeneration.Tools",
"generator": "constant",
"parameters": {
"value": "${MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion}"
},
"replaces": "$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)"
},
"MicrosoftAspNetCoreMvcPackageVersion": {
"type": "generated",
"description": "The package version for Microsoft.AspNetCore.Mvc",
"generator": "constant",
"parameters": {
"value": "${MicrosoftAspNetCoreMvcPackageVersion}"
},
"replaces": "$(MicrosoftAspNetCoreMvcPackageVersion)"
}
},
"tags": {
@ -84,4 +138,4 @@
]
}
]
}
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -9,17 +9,17 @@
</PropertyGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(MicrosoftAspNetCoreSpaServicesPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
<ItemGroup>
@ -59,4 +59,4 @@
</ItemGroup>
</Target>
</Project>
</Project>

View File

@ -0,0 +1,7 @@
<Project>
<Import Project="..\..\..\Directory.Build.targets" />
<!--
This file intentionally left mostly blank to ensure the template projects
are independent from the template package build config.
-->
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -9,17 +9,22 @@
</PropertyGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(MicrosoftAspNetCoreSpaServicesPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
<ItemGroup>
<!-- Files not to publish (note that the 'dist' subfolders are re-added below) -->
<Content Remove="ClientApp\**" />
</ItemGroup>
<!--/-:cnd:noEmit -->
@ -46,7 +51,7 @@
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="wwwroot\dist\**" />
<DistFiles Include="wwwroot\dist\**; ClientApp\dist\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
@ -54,4 +59,4 @@
</ItemGroup>
</Target>
</Project>
</Project>

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework Condition="'$(TargetFrameworkOverride)' == ''">netcoreapp2.0</TargetFramework>
@ -9,17 +9,17 @@
</PropertyGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' == ''">
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="$(MicrosoftAspNetCoreAllPackageVersion)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFrameworkOverride)' != ''">
<PackageReference Include="Microsoft.AspNetCore" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(TemplateDep_Coherence_2_1)" />
<PackageReference Include="Microsoft.AspNetCore" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(MicrosoftAspNetCoreMvcPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="$(MicrosoftAspNetCoreSpaServicesPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="$(MicrosoftVisualStudioWebCodeGenerationToolsPackageVersion)" />
</ItemGroup>
<ItemGroup>
@ -59,4 +59,4 @@
</ItemGroup>
</Target>
</Project>
</Project>

View File

@ -0,0 +1,10 @@
<Project>
<Target Name="SetPackageProperties" BeforeTargets="GenerateNuspec">
<PropertyGroup>
<NuspecProperties>
$(NuspecProperties);
version=$(PackageVersion);
</NuspecProperties>
</PropertyGroup>
</Target>
</Project>

View File

@ -0,0 +1,4 @@
<Project>
<Import Project="..\Directory.Build.targets" />
<Import Project="GenerateTestProps.targets" />
</Project>

View File

@ -0,0 +1,8 @@
<Project>
<Target Name="GenerateTestProps" BeforeTargets="CoreCompile">
<Sdk_GenerateFileFromTemplate
TemplateFile="$(MSBuildThisFileDirectory)TemplateTests.props.in"
Properties="RestoreSources=$([MSBuild]::Escape($(RestoreSources)));RuntimeFrameworkVersion=$(RuntimeFrameworkVersion)"
OutputPath="$(OutputPath)TemplateTests.props" />
</Target>
</Project>

View File

@ -0,0 +1,7 @@
<Project>
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<RestoreSources>${RestoreSources}</RestoreSources>
<RuntimeFrameworkVersion>${RuntimeFrameworkVersion}</RuntimeFrameworkVersion>
</PropertyGroup>
</Project>

View File

@ -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);

View File

@ -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}");

View File

@ -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);

View File

@ -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,13 +73,13 @@ namespace Templates.Test.Helpers
private static void VerifyCannotFindTemplate(ITestOutputHelper output, string templateName)
{
// Verify we really did remove the previous templates
var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("D"));
var tempDir = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName(), Guid.NewGuid().ToString("D"));
Directory.CreateDirectory(tempDir);
var proc = ProcessEx.Run(
output,
tempDir,
"dotnet",
DotNetMuxer.MuxerPathOrDefault(),
$"new \"{templateName}\"");
proc.WaitForExit(assertSuccess: false);
if (!proc.Error.Contains($"No templates matched the input template name: {templateName}."))
@ -91,7 +92,7 @@ namespace Templates.Test.Helpers
private static string FindAncestorDirectoryContaining(string filename)
{
var dir = Directory.GetCurrentDirectory();
var dir = AppContext.BaseDirectory;
while (dir != null)
{
if (File.Exists(Path.Combine(dir, filename)))
@ -102,7 +103,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}");
}
}
}

View File

@ -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"), "<Project />");
File.WriteAllText(Path.Combine(TemplateOutputDir, "Directory.Build.props"), "<Project><Import Project=\"../../TemplateTests.props\" /></Project>");
File.WriteAllText(Path.Combine(TemplateOutputDir, "Directory.Build.targets"), "<Project />");
}
@ -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)

View File

@ -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", true);
AssertFileExists("urlRewrite.config", false);
AssertFileExists("Controllers/AccountController.cs", true);

View File

@ -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");

View File

@ -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();

View File

@ -5,13 +5,15 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Security.Permissions" Version="$(SystemSecurityPermissionsPackageVersion)" />
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(MicrosoftAspNetCoreTestingPackageVersion)" />
<PackageReference Include="Microsoft.Extensions.CommandLineUtils.Sources" Version="$(MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion)" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" PrivateAssets="All" />
<PackageReference Include="Selenium.Firefox.WebDriver" Version="$(SeleniumFirefoxWebDriverPackageVersion)" />
<PackageReference Include="Selenium.Support" Version="$(SeleniumSupportPackageVersion)" NoWarn="NU1701" />
<PackageReference Include="Selenium.WebDriver" Version="$(SeleniumWebDriverPackageVersion)" NoWarn="NU1701" />
<PackageReference Include="Selenium.WebDriver.MicrosoftDriver" Version="$(SeleniumWebDriverMicrosoftDriverPackageVersion)" />
<PackageReference Include="Selenium.WebDriver" Version="$(SeleniumWebDriverPackageVersion)" NoWarn="NU1701" />
<PackageReference Include="System.Security.Permissions" Version="$(SystemSecurityPermissionsPackageVersion)" />
<PackageReference Include="xunit" Version="$(XunitPackageVersion)" />
<PackageReference Include="xunit.analyzers" Version="$(XunitAnalyzersPackageVersion)" />
<PackageReference Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualStudioPackageVersion)" />

View File

@ -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("api", targetFrameworkOverride);

View File

@ -1,12 +0,0 @@
<Project Sdk="Microsoft.Net.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<OutputType>Library</OutputType>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" />
</ItemGroup>
</Project>

View File

@ -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;
}
}
}

View File

@ -4,6 +4,8 @@
<VersionSuffix>rtm</VersionSuffix>
<PackageVersion Condition="'$(IsFinalBuild)' == 'true' AND '$(VersionSuffix)' == 'rtm' ">$(VersionPrefix)</PackageVersion>
<PackageVersion Condition="'$(IsFinalBuild)' == 'true' AND '$(VersionSuffix)' != 'rtm' ">$(VersionPrefix)-$(VersionSuffix)-final</PackageVersion>
<BuildNumber Condition="'$(BuildNumber)' == ''">t000</BuildNumber>
<VersionSuffix Condition="'$(VersionSuffix)' != '' And '$(BuildNumber)' != ''">$(VersionSuffix)-$(BuildNumber)</VersionSuffix>
<VersionSuffix Condition="'$(VersionSuffix)' != '' And '$(VersionMetadata)' != ''">$(VersionSuffix)+$(VersionMetadata)</VersionSuffix>
</PropertyGroup>
</Project>