29
29
public class CSharpClientCodegen extends AbstractCSharpCodegen {
30
30
@ SuppressWarnings ({"hiding" })
31
31
private static final Logger LOGGER = LoggerFactory .getLogger (CSharpClientCodegen .class );
32
+ private static final String NET471 = "v4.7.1" ;
32
33
private static final String NET45 = "v4.5" ;
33
34
private static final String NET40 = "v4.0" ;
34
35
private static final String NET35 = "v3.5" ;
@@ -48,10 +49,10 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
48
49
protected String modelDocPath = "docs/" ;
49
50
50
51
// Defines TargetFrameworkVersion in csproj files
51
- protected String targetFramework = NET45 ;
52
+ protected String targetFramework = NET471 ;
52
53
53
54
// Defines nuget identifiers for target framework
54
- protected String targetFrameworkNuget = "net45 " ;
55
+ protected String targetFrameworkNuget = "net471 " ;
55
56
protected boolean supportsAsync = Boolean .TRUE ;
56
57
protected boolean supportsUWP = Boolean .FALSE ;
57
58
protected boolean netStandard = Boolean .FALSE ;
@@ -106,6 +107,7 @@ public CSharpClientCodegen() {
106
107
.put (NET35 , ".NET Framework 3.5 compatible" )
107
108
.put (NET40 , ".NET Framework 4.0 compatible" )
108
109
.put (NET45 , ".NET Framework 4.5+ compatible" )
110
+ .put (NET471 , ".NET Framework 4.71+ compatible" )
109
111
.put (NETSTANDARD , ".NET Standard 1.3 compatible" )
110
112
.put (UWP , "Universal Windows Platform (IMPORTANT: this will be decommissioned and replaced by v5.0)" )
111
113
.build ();
@@ -186,6 +188,16 @@ public CSharpClientCodegen() {
186
188
187
189
@ Override
188
190
public void processOpts () {
191
+
192
+ // process targetFramework first as it is used to get Template Dir
193
+ if (additionalProperties .containsKey (CodegenConstants .DOTNET_FRAMEWORK )) {
194
+ setTargetFramework ((String ) additionalProperties .get (CodegenConstants .DOTNET_FRAMEWORK ));
195
+ } else {
196
+ // Ensure default is set.
197
+ setTargetFramework (NET471 );
198
+ additionalProperties .put (CodegenConstants .DOTNET_FRAMEWORK , this .targetFramework );
199
+ }
200
+
189
201
super .processOpts ();
190
202
191
203
/*
@@ -221,14 +233,6 @@ public void processOpts() {
221
233
additionalProperties .put (CodegenConstants .VALIDATABLE , validatable );
222
234
}
223
235
224
- if (additionalProperties .containsKey (CodegenConstants .DOTNET_FRAMEWORK )) {
225
- setTargetFramework ((String ) additionalProperties .get (CodegenConstants .DOTNET_FRAMEWORK ));
226
- } else {
227
- // Ensure default is set.
228
- setTargetFramework (NET45 );
229
- additionalProperties .put (CodegenConstants .DOTNET_FRAMEWORK , this .targetFramework );
230
- }
231
-
232
236
if (NET35 .equals (this .targetFramework )) {
233
237
// This is correct, mono will require you build .NET 3.5 sources using 4.0 SDK
234
238
additionalProperties .put (MCS_NET_VERSION_KEY , "4" );
@@ -273,10 +277,14 @@ public void processOpts() {
273
277
274
278
setTargetFrameworkNuget ("net40" );
275
279
setSupportsAsync (Boolean .FALSE );
276
- } else {
280
+ } else if ( NET45 . equals ( this . targetFramework )) {
277
281
additionalProperties .put (MCS_NET_VERSION_KEY , "4.5.2-api" );
278
282
setTargetFrameworkNuget ("net45" );
279
283
setSupportsAsync (Boolean .TRUE );
284
+ } else {
285
+ additionalProperties .put (MCS_NET_VERSION_KEY , "4.7.1-api" );
286
+ setTargetFrameworkNuget ("net471" );
287
+ setSupportsAsync (Boolean .TRUE );
280
288
}
281
289
282
290
if (additionalProperties .containsKey (CodegenConstants .GENERATE_PROPERTY_CHANGED )) {
@@ -375,15 +383,17 @@ public void processOpts() {
375
383
clientPackageDir , "ReadOnlyDictionary.cs" ));
376
384
}
377
385
378
- if (Boolean .FALSE .equals (this .netStandard ) && Boolean .FALSE .equals (this .netCoreProjectFileFlag )) {
386
+ if (Boolean .FALSE .equals (this .netStandard ) && Boolean .FALSE .equals (this .netCoreProjectFileFlag ) && ! NET471 . equals ( this . targetFramework ) ) {
379
387
supportingFiles .add (new SupportingFile ("compile.mustache" , "" , "build.bat" ));
380
388
supportingFiles .add (new SupportingFile ("compile-mono.sh.mustache" , "" , "build.sh" ));
381
389
382
- // copy package.config to nuget's standard location for project-level installs
383
- supportingFiles .add (new SupportingFile ("packages.config.mustache" , packageFolder + File .separator , "packages.config" ));
390
+ if (!NET471 .equals (this .targetFramework )) {
391
+ // copy package.config to nuget's standard location for project-level installs
392
+ supportingFiles .add (new SupportingFile ("packages.config.mustache" , packageFolder + File .separator , "packages.config" ));
393
+ }
384
394
// .travis.yml for travis-ci.org CI
385
395
supportingFiles .add (new SupportingFile ("travis.mustache" , "" , ".travis.yml" ));
386
- } else if (Boolean .FALSE .equals (this .netCoreProjectFileFlag )) {
396
+ } else if (Boolean .FALSE .equals (this .netCoreProjectFileFlag ) && ! NET471 . equals ( this . targetFramework ) ) {
387
397
supportingFiles .add (new SupportingFile ("project.json.mustache" , packageFolder + File .separator , "project.json" ));
388
398
}
389
399
@@ -420,7 +430,7 @@ public void processOpts() {
420
430
supportingFiles .add (new SupportingFile ("git_push.sh.mustache" , "" , "git_push.sh" ));
421
431
supportingFiles .add (new SupportingFile ("gitignore.mustache" , "" , ".gitignore" ));
422
432
423
- if (optionalAssemblyInfoFlag && Boolean .FALSE .equals (this .netCoreProjectFileFlag )) {
433
+ if (optionalAssemblyInfoFlag && Boolean .FALSE .equals (this .netCoreProjectFileFlag ) && ! NET471 . equals ( this . targetFramework ) ) {
424
434
supportingFiles .add (new SupportingFile ("AssemblyInfo.mustache" , packageFolder + File .separator + "Properties" , "AssemblyInfo.cs" ));
425
435
}
426
436
if (optionalProjectFileFlag ) {
@@ -501,6 +511,13 @@ public String getName() {
501
511
return "csharp" ;
502
512
}
503
513
514
+ public String getDefaultTemplateDir () {
515
+ if (NET471 .equals (this .targetFramework )) {
516
+ return "csharp-471" ;
517
+ }
518
+ return "csharp" ;
519
+ }
520
+
504
521
@ Override
505
522
public String getHelp () {
506
523
return "Generates a CSharp client library." ;
0 commit comments