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" /> + +