@@ -11,6 +11,7 @@ import * as targz from 'tar.gz';
1111const isWindows = / ^ w i n / . test ( process . platform ) ;
1212const textFileExtensions = [ '.gitignore' , 'template_gitignore' , '.config' , '.cs' , '.cshtml' , '.csproj' , '.html' , '.js' , '.json' , '.jsx' , '.md' , '.nuspec' , '.ts' , '.tsx' ] ;
1313const yeomanGeneratorSource = './src/yeoman' ;
14+ const localizationPackageGuid = '{296D76CB-AD6F-4B46-9072-33CC07E265F8}' ;
1415
1516const dotNetPackages = {
1617 builtIn : 'Microsoft.DotNet.Web.Spa.ProjectTemplates' ,
@@ -22,15 +23,16 @@ interface TemplateConfig {
2223 dotNetNewId : string ;
2324 dotNetPackageId : string ;
2425 displayName : string ;
26+ localizationIdStart : number ;
2527}
2628
2729const templates : { [ key : string ] : TemplateConfig } = {
28- 'angular' : { dotNetPackageId : dotNetPackages . builtIn , dir : '../../templates/AngularSpa/' , dotNetNewId : 'Angular' , displayName : 'Angular' } ,
29- 'aurelia' : { dotNetPackageId : dotNetPackages . extra , dir : '../../templates/AureliaSpa/' , dotNetNewId : 'Aurelia' , displayName : 'Aurelia' } ,
30- 'knockout' : { dotNetPackageId : dotNetPackages . extra , dir : '../../templates/KnockoutSpa/' , dotNetNewId : 'Knockout' , displayName : 'Knockout.js' } ,
31- 'react-redux' : { dotNetPackageId : dotNetPackages . builtIn , dir : '../../templates/ReactReduxSpa/' , dotNetNewId : 'ReactRedux' , displayName : 'React.js and Redux' } ,
32- 'react' : { dotNetPackageId : dotNetPackages . builtIn , dir : '../../templates/ReactSpa/' , dotNetNewId : 'React' , displayName : 'React.js' } ,
33- 'vue' : { dotNetPackageId : dotNetPackages . extra , dir : '../../templates/VueSpa/' , dotNetNewId : 'Vue' , displayName : 'Vue.js' }
30+ 'angular' : { dotNetPackageId : dotNetPackages . builtIn , dir : '../../templates/AngularSpa/' , dotNetNewId : 'Angular' , displayName : 'Angular' , localizationIdStart : 100 } ,
31+ 'aurelia' : { dotNetPackageId : dotNetPackages . extra , dir : '../../templates/AureliaSpa/' , dotNetNewId : 'Aurelia' , displayName : 'Aurelia' , localizationIdStart : 200 } ,
32+ 'knockout' : { dotNetPackageId : dotNetPackages . extra , dir : '../../templates/KnockoutSpa/' , dotNetNewId : 'Knockout' , displayName : 'Knockout.js' , localizationIdStart : 300 } ,
33+ 'react-redux' : { dotNetPackageId : dotNetPackages . builtIn , dir : '../../templates/ReactReduxSpa/' , dotNetNewId : 'ReactRedux' , displayName : 'React.js and Redux' , localizationIdStart : 400 } ,
34+ 'react' : { dotNetPackageId : dotNetPackages . builtIn , dir : '../../templates/ReactSpa/' , dotNetNewId : 'React' , displayName : 'React.js' , localizationIdStart : 500 } ,
35+ 'vue' : { dotNetPackageId : dotNetPackages . extra , dir : '../../templates/VueSpa/' , dotNetNewId : 'Vue' , displayName : 'Vue.js' , localizationIdStart : 600 }
3436} ;
3537
3638function isTextFile ( filename : string ) : boolean {
@@ -181,6 +183,13 @@ function buildDotNetNewNuGetPackage(packageId: string) {
181183 exclude : [ '.template.config/**' ]
182184 } ] ,
183185 symbols : {
186+ TargetFrameworkOverride : {
187+ type : 'parameter' ,
188+ description : 'Overrides the target framework' ,
189+ replaces : 'TargetFrameworkOverride' ,
190+ datatype : 'string' ,
191+ defaultValue : ''
192+ } ,
184193 Framework : {
185194 type : 'parameter' ,
186195 description : 'The target framework for the project.' ,
@@ -191,6 +200,7 @@ function buildDotNetNewNuGetPackage(packageId: string) {
191200 description : 'Target netcoreapp2.0'
192201 }
193202 ] ,
203+ replaces : 'netcoreapp2.0' ,
194204 defaultValue : 'netcoreapp2.0'
195205 } ,
196206 skipRestore : {
@@ -226,21 +236,35 @@ function buildDotNetNewNuGetPackage(packageId: string) {
226236 } , null , 2 ) ) ;
227237
228238 fs . writeFileSync ( path . join ( templateConfigDir , 'dotnetcli.host.json' ) , JSON . stringify ( {
239+ $schema : 'http://json.schemastore.org/dotnetcli.host' ,
229240 symbolInfo : {
241+ TargetFrameworkOverride : {
242+ isHidden : 'true' ,
243+ longName : 'target-framework-override' ,
244+ shortName : ''
245+ } ,
246+ Framework : {
247+ longName : 'framework'
248+ } ,
230249 skipRestore : {
231250 longName : 'no-restore' ,
232251 shortName : ''
233252 }
234253 }
235254 } , null , 2 ) ) ;
236255
256+ const localisedNameId = templateConfig . localizationIdStart + 0 ;
257+ const localisedDescId = templateConfig . localizationIdStart + 1 ;
258+
237259 fs . writeFileSync ( path . join ( templateConfigDir , 'vs-2017.3.host.json' ) , JSON . stringify ( {
238- name : { text : templateConfig . displayName } ,
239- description : { text : `Web application built with MVC ASP.NET Core and ${ templateConfig . displayName } ` } ,
240- order : 2000 ,
260+ $schema : 'http://json.schemastore.org/vs-2017.3.host' ,
261+ name : { text : templateConfig . displayName , package : localizationPackageGuid , id : localisedNameId . toString ( ) } ,
262+ description : { text : `ASP.NET Core application with ${ templateConfig . displayName } ` , package : localizationPackageGuid , id : localisedDescId . toString ( ) } ,
263+ order : 301 ,
241264 icon : 'icon.png' ,
242265 learnMoreLink : 'https://github.com/aspnet/JavaScriptServices' ,
243- uiFilters : [ 'oneaspnet' ]
266+ uiFilters : [ 'oneaspnet' ] ,
267+ minFullFrameworkVersion : '4.6.1'
244268 } , null , 2 ) ) ;
245269 } ) ;
246270
0 commit comments