From 25672336f92accfa8d24823d11d0bb5528c9ad4d Mon Sep 17 00:00:00 2001
From: Doug Bunting <6431421+dougbu@users.noreply.github.com>
Date: Sun, 2 Jun 2019 22:09:42 -0700
Subject: [PATCH] Add more properties controlling service reference code
generation (#10641)
- `$(OpenApiGenerateCodeOnBuild)` controls if targets run before compile targets
- #4924
- also correct multiple invocations when project has multiple target frameworks
- `$(OpenApiBuildReferencedProjects)` controls whether `@(OpenApiProjectReference)` items build automatically
- #6582
- rename a few other properties and targets
also:
- add symbols for Microsoft.Extensions.ApiDescription.Client task assembly
- #10508
- unconditionally run `OpenApiGetDocuments` target in referenced projects
- corrects compilation in design-time builds
- no longer uses `@(ProjectReferenceWithConfiguration)`; referenced project chooses all property values
nits:
- consolidate into a single `$(GenerateOpenApiCodeDependsOn)` property
- rename task assembly and namespaces in Microsoft.Extensions.ApiDesription.Client to match the project
- allow `OpenApiGetDocuments` targets to run in parallel if `$(BuildInParallel)` is enabled
- remove `$(OpenApiCodeDirectory)` normalization; never concatenated with anything else
---
eng/ProjectReferences.props | 2 +-
.../src/CSharpIdentifier.cs | 2 +-
.../src/GetCurrentItems.cs | 2 +-
.../src/GetFileReferenceMetadata.cs | 2 +-
.../src/MetadataSerializer.cs | 2 +-
...ft.Extensions.ApiDescription.Client.csproj | 4 +-
...ft.Extensions.ApiDescription.Client.nuspec | 4 +-
.../src/Properties/Resources.Designer.cs | 4 +-
...oft.Extensions.ApiDescription.Client.props | 69 +++++++++++++------
...t.Extensions.ApiDescription.Client.targets | 60 ++++++++--------
...oft.Extensions.ApiDescription.Client.props | 4 ++
...t.Extensions.ApiDescription.Client.targets | 13 ++--
12 files changed, 103 insertions(+), 65 deletions(-)
create mode 100644 src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.props
diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props
index 9f037c669a..d7b785a06f 100644
--- a/eng/ProjectReferences.props
+++ b/eng/ProjectReferences.props
@@ -8,7 +8,7 @@
-
+
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/CSharpIdentifier.cs b/src/Mvc/Extensions.ApiDescription.Client/src/CSharpIdentifier.cs
index 33d0b0e9eb..b1ee4f7c0c 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/CSharpIdentifier.cs
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/CSharpIdentifier.cs
@@ -6,7 +6,7 @@ using System.Text;
// Copied from
// https://github.com/aspnet/AspNetCore-Tooling/blob/master/src/Razor/src/Microsoft.AspNetCore.Razor.Language/CSharpIdentifier.cs
-namespace Microsoft.Extensions.ApiDescription.Tasks
+namespace Microsoft.Extensions.ApiDescription.Client
{
internal static class CSharpIdentifier
{
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/GetCurrentItems.cs b/src/Mvc/Extensions.ApiDescription.Client/src/GetCurrentItems.cs
index 97ea236f2c..975e716d64 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/GetCurrentItems.cs
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/GetCurrentItems.cs
@@ -4,7 +4,7 @@
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
-namespace Microsoft.Extensions.ApiDescription.Tasks
+namespace Microsoft.Extensions.ApiDescription.Client
{
///
/// Restore s from given property value.
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs b/src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs
index 73f8d01495..2b0447c590 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs
@@ -7,7 +7,7 @@ using System.IO;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
-namespace Microsoft.Extensions.ApiDescription.Tasks
+namespace Microsoft.Extensions.ApiDescription.Client
{
///
/// Adds or corrects ClassName, FirstForGenerator, Namespace, and OutputPath metadata in OpenApiReference items.
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs b/src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs
index 32f7fbf832..eeff4170fc 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs
@@ -6,7 +6,7 @@ using System.Text;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
-namespace Microsoft.Extensions.ApiDescription.Tasks
+namespace Microsoft.Extensions.ApiDescription.Client
{
///
/// Utility methods to serialize and deserialize metadata.
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
index 2edaf7b68c..2029ac0a25 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
@@ -6,21 +6,19 @@
true
- Microsoft.Extensions.ApiDescription.Tasks
MSBuild tasks and targets for code generation
false
false
- false
$(MSBuildProjectName).nuspec
$(MSBuildProjectName)
Build Tasks;MSBuild;Swagger;Open API;code generation; Web API client
true
$(ExperimentalPackageVersion)
- $(AssemblyName)
netstandard2.0;net461
false
$(ExperimentalVersionPrefix)
$(ExperimentalVersionSuffix)
+
false
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
index f04380cfe4..cc49fd1c56 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
@@ -19,7 +19,7 @@
-
-
+
+
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs b/src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs
index 3e16c26c41..f1b61f00ac 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs
@@ -1,5 +1,5 @@
//
-namespace Microsoft.Extensions.ApiDescription.Tasks
+namespace Microsoft.Extensions.ApiDescription.Client
{
using System.Globalization;
using System.Reflection;
@@ -8,7 +8,7 @@ namespace Microsoft.Extensions.ApiDescription.Tasks
internal static class Resources
{
private static readonly ResourceManager _resourceManager
- = new ResourceManager("Microsoft.Extensions.ApiDescription.Tasks.Resources", typeof(Resources).GetTypeInfo().Assembly);
+ = new ResourceManager("Microsoft.Extensions.ApiDescription.Client.Resources", typeof(Resources).GetTypeInfo().Assembly);
///
/// Multiple items have OutputPath='{0}'. All OpenApiReference items must have unique OutputPath metadata.
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.props b/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.props
index 5f5640bfd3..dd5e8dd9e8 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.props
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.props
@@ -1,35 +1,60 @@
- <_ApiDescriptionTasksAssemblyTarget
- Condition="'$(MSBuildRuntimeType)' == 'Core'">netstandard2.0
- <_ApiDescriptionTasksAssemblyTarget
- Condition="'$(MSBuildRuntimeType)' != 'Core'">net461
- <_ApiDescriptionTasksAssemblyPath>$(MSBuildThisFileDirectory)/../tasks/$(_ApiDescriptionTasksAssemblyTarget)/Microsoft.Extensions.ApiDescription.Tasks.dll
- <_ApiDescriptionTasksAssemblyTarget />
+ <_ApiDescriptionClientAssemblyTarget
+ Condition="'$(MSBuildRuntimeType)' == 'Core'">netstandard2.0
+ <_ApiDescriptionClientAssemblyTarget
+ Condition="'$(MSBuildRuntimeType)' != 'Core'">net461
+ <_ApiDescriptionClientAssemblyPath>$(MSBuildThisFileDirectory)/../tasks/$(_ApiDescriptionClientAssemblyTarget)/Microsoft.Extensions.ApiDescription.Client.dll
+ <_ApiDescriptionClientAssemblyTarget />
-
-
+
+
-
+
+
- true
+ true
- $(BaseIntermediateOutputPath)
- $([MSBuild]::EnsureTrailingSlash('$(OpenApiDefaultOutputDirectory)'))
+ true
+
+
+ true
+
+
+ $(BaseIntermediateOutputPath)
+
NSwagCSharp
+
+
- $(OpenApiDefaultGeneratorOptions)
+ $(OpenApiGenerateCodeOptions)
+
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.targets b/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.targets
index bd7006fc36..b10277a696 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.targets
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.targets
@@ -2,21 +2,18 @@
-
- _GetMetadataForOpenApiReferences;
- _GenerateOpenApiReferenceCode;
- _CreateCompileItemsForOpenApiReferences
-
-
+
_GenerateErrorsForOldItems;
_CreateOpenApiReferenceItemsForOpenApiProjectReferences;
- GenerateOpenApiReferenceCode
-
+ _GetMetadataForOpenApiReferences;
+ _GenerateOpenApiCode;
+ _CreateCompileItemsForOpenApiReferences
+
-
+
+
@@ -143,7 +134,18 @@
-
+
+
+
+
+
+
+ Condition=" '$(OpenApiGenerateCodeOnBuild)' == 'true' AND ('$(TargetFramework)' == '' OR '$(TargetFrameworks)' == '') "
+ DependsOnTargets="GenerateOpenApiCode" />
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.props b/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.props
new file mode 100644
index 0000000000..9ce9d3e259
--- /dev/null
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.props
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets b/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets
index d085051f06..b264baa9df 100644
--- a/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets
+++ b/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets
@@ -1,9 +1,14 @@
-
-
+
+ RemoveProperties="RuntimeIdentifier" />
+
+