Rename client code generation components
- #8523 - main project / package --> `Microsoft.Extensions.ApiDescription.Design` - tasks assembly and namespace --> `Microsoft.Extensions.ApiDescription.Tasks` - tool namespace --> `Microsoft.Extensions.ApiDescription.Tool` - targets --> verbs e.g. `GenerateTypeScriptNSwag` and `GenerateDocumentDefault` - `@(ServiceProjectReference)` metadata -> align with common MSBuild project properties - exception: `$(MSBuildProjectExtensionsPath)`; it's readonly and `%(ProjectExtensionsPath)` is unambiguous - use `%(ProjectExtensionsPath)` - also add `%(Targets)` metadata and remove unused `%(ProjectRuntimeIdentifier)` - `@(<ServiceProjectReferenceMetadata)` metadata -> align with MSBuild project properties - exceptions: `$(MSBuildProjectDirectory)`, `$(MSBuildProjectExtensionsPath)` and `$(MSBuildProjectName)` - readonly properties and names already unambiguous
This commit is contained in:
parent
d3442f3590
commit
5cd86977ed
|
|
@ -121,7 +121,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-getdocument", "src\d
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GetDocumentInsider", "src\GetDocumentInsider\GetDocumentInsider.csproj", "{2F683CF8-B055-46AE-BF83-9D1307F8D45F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GetDocumentInsider", "src\GetDocumentInsider\GetDocumentInsider.csproj", "{2F683CF8-B055-46AE-BF83-9D1307F8D45F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.ApiDescription.Client", "src\Microsoft.Extensions.ApiDescription.Client\Microsoft.Extensions.ApiDescription.Client.csproj", "{34E3C302-B767-40C8-B538-3EE2BD4000C4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.ApiDescription.Design", "src\Microsoft.Extensions.ApiDescription.Design\Microsoft.Extensions.ApiDescription.Design.csproj", "{34E3C302-B767-40C8-B538-3EE2BD4000C4}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|
|
||||||
2
Mvc.sln
2
Mvc.sln
|
|
@ -182,7 +182,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-getdocument", "src\d
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GetDocumentInsider", "src\GetDocumentInsider\GetDocumentInsider.csproj", "{2F683CF8-B055-46AE-BF83-9D1307F8D45F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GetDocumentInsider", "src\GetDocumentInsider\GetDocumentInsider.csproj", "{2F683CF8-B055-46AE-BF83-9D1307F8D45F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.ApiDescription.Client", "src\Microsoft.Extensions.ApiDescription.Client\Microsoft.Extensions.ApiDescription.Client.csproj", "{34E3C302-B767-40C8-B538-3EE2BD4000C4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.ApiDescription.Design", "src\Microsoft.Extensions.ApiDescription.Design\Microsoft.Extensions.ApiDescription.Design.csproj", "{34E3C302-B767-40C8-B538-3EE2BD4000C4}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"DefaultCompositeRule"
|
"DefaultCompositeRule"
|
||||||
],
|
],
|
||||||
"packages": {
|
"packages": {
|
||||||
"Microsoft.Extensions.ApiDescription.Client": {
|
"Microsoft.Extensions.ApiDescription.Design": {
|
||||||
"Exclusions": {
|
"Exclusions": {
|
||||||
"BUILD_ITEMS_FRAMEWORK": {
|
"BUILD_ITEMS_FRAMEWORK": {
|
||||||
"*": "Package includes tool with different target frameworks."
|
"*": "Package includes tool with different target frameworks."
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal class AnsiConsole
|
internal class AnsiConsole
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal static class AnsiConstants
|
internal static class AnsiConstants
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal class AnsiTextWriter
|
internal class AnsiTextWriter
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal class CommandException : Exception
|
internal class CommandException : Exception
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
internal abstract class CommandBase
|
internal abstract class CommandBase
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ using System.Runtime.Loader;
|
||||||
#endif
|
#endif
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
internal class GetDocumentCommand : ProjectCommandBase
|
internal class GetDocumentCommand : ProjectCommandBase
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class GetDocumentCommandContext
|
public class GetDocumentCommandContext
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ using System.Reflection;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
internal class GetDocumentCommandWorker
|
internal class GetDocumentCommandWorker
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
internal class HelpCommandBase : CommandBase
|
internal class HelpCommandBase : CommandBase
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
internal abstract class ProjectCommandBase : HelpCommandBase
|
internal abstract class ProjectCommandBase : HelpCommandBase
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<Description>GetDocument Command-line Tool inside man</Description>
|
<Description>GetDocument Command-line Tool inside man</Description>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<RootNamespace>Microsoft.Extensions.ApiDescription.Client</RootNamespace>
|
<RootNamespace>Microsoft.Extensions.ApiDescription.Tool</RootNamespace>
|
||||||
<TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
|
<TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal static class ProductInfo
|
internal static class ProductInfo
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
using Microsoft.Extensions.ApiDescription.Client.Commands;
|
using Microsoft.Extensions.ApiDescription.Tool.Commands;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal static class Program
|
internal static class Program
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
@ -8,7 +8,7 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
internal static class Resources
|
internal static class Resources
|
||||||
{
|
{
|
||||||
private static readonly ResourceManager _resourceManager
|
private static readonly ResourceManager _resourceManager
|
||||||
= new ResourceManager("Microsoft.Extensions.ApiDescription.Client.Resources", typeof(Resources).GetTypeInfo().Assembly);
|
= new ResourceManager("Microsoft.Extensions.ApiDescription.Tool.Resources", typeof(Resources).GetTypeInfo().Assembly);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The assembly to use.
|
/// The assembly to use.
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using static Microsoft.Extensions.ApiDescription.Client.AnsiConstants;
|
using static Microsoft.Extensions.ApiDescription.Tool.AnsiConstants;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal static class Reporter
|
internal static class Reporter
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ using Microsoft.Build.Utilities;
|
||||||
using Task = System.Threading.Tasks.Task;
|
using Task = System.Threading.Tasks.Task;
|
||||||
using Utilities = Microsoft.Build.Utilities;
|
using Utilities = Microsoft.Build.Utilities;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Downloads a file.
|
/// Downloads a file.
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Build.Utilities;
|
using Microsoft.Build.Utilities;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Restore <see cref="ITaskItem"/>s from given property value.
|
/// Restore <see cref="ITaskItem"/>s from given property value.
|
||||||
|
|
@ -7,7 +7,7 @@ using System.IO;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Build.Utilities;
|
using Microsoft.Build.Utilities;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds or corrects ClassName, Namespace and OutputPath metadata in ServiceFileReference items. Also stores final
|
/// Adds or corrects ClassName, Namespace and OutputPath metadata in ServiceFileReference items. Also stores final
|
||||||
|
|
@ -6,7 +6,7 @@ using System.IO;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Build.Utilities;
|
using Microsoft.Build.Utilities;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds or corrects DocumentPath and project-related metadata in ServiceProjectReference items. Also stores final
|
/// Adds or corrects DocumentPath and project-related metadata in ServiceProjectReference items. Also stores final
|
||||||
|
|
@ -7,7 +7,7 @@ using System.IO;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Build.Utilities;
|
using Microsoft.Build.Utilities;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds or corrects DocumentPath metadata in ServiceUriReference items.
|
/// Adds or corrects DocumentPath metadata in ServiceUriReference items.
|
||||||
|
|
@ -6,7 +6,7 @@ using System.Text;
|
||||||
using Microsoft.Build.Framework;
|
using Microsoft.Build.Framework;
|
||||||
using Microsoft.Build.Utilities;
|
using Microsoft.Build.Utilities;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Utility methods to serialize and deserialize <see cref="ITaskItem"/> metadata.
|
/// Utility methods to serialize and deserialize <see cref="ITaskItem"/> metadata.
|
||||||
|
|
@ -6,13 +6,16 @@
|
||||||
<!-- Do not complain about lack of lib folder. -->
|
<!-- Do not complain about lack of lib folder. -->
|
||||||
<NoPackageAnalysis>true</NoPackageAnalysis>
|
<NoPackageAnalysis>true</NoPackageAnalysis>
|
||||||
|
|
||||||
|
<AssemblyName>Microsoft.Extensions.ApiDescription.Tasks</AssemblyName>
|
||||||
<Description>MSBuild tasks and targets for code generation</Description>
|
<Description>MSBuild tasks and targets for code generation</Description>
|
||||||
<EnableApiCheck>false</EnableApiCheck>
|
<EnableApiCheck>false</EnableApiCheck>
|
||||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||||
<IncludeSource>false</IncludeSource>
|
<IncludeSource>false</IncludeSource>
|
||||||
<IncludeSymbols>false</IncludeSymbols>
|
<IncludeSymbols>false</IncludeSymbols>
|
||||||
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
|
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
|
||||||
|
<PackageId>$(MSBuildProjectName)</PackageId>
|
||||||
<PackageTags>Build Tasks;MSBuild;Swagger;Open API;code generation; Web API client</PackageTags>
|
<PackageTags>Build Tasks;MSBuild;Swagger;Open API;code generation; Web API client</PackageTags>
|
||||||
|
<RootNamespace>$(AssemblyName)</RootNamespace>
|
||||||
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
|
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
@ -20,8 +20,8 @@
|
||||||
<files>
|
<files>
|
||||||
<file src="build\*" target="build" />
|
<file src="build\*" target="build" />
|
||||||
<file src="buildMultiTargeting\*" target="buildMultiTargeting" />
|
<file src="buildMultiTargeting\*" target="buildMultiTargeting" />
|
||||||
<file src="bin\$configuration$\net461\Microsoft.Extensions.ApiDescription.Client.*" target="tasks\net461" />
|
<file src="bin\$configuration$\net461\Microsoft.Extensions.ApiDescription.Tasks.*" target="tasks\net461" />
|
||||||
<file src="bin\$configuration$\netstandard2.0\Microsoft.Extensions.ApiDescription.Client.*" target="tasks\netstandard2.0" />
|
<file src="bin\$configuration$\netstandard2.0\Microsoft.Extensions.ApiDescription.Tasks.*" target="tasks\netstandard2.0" />
|
||||||
<file src="..\dotnet-getdocument\bin\$configuration$\netcoreapp2.1\dotnet-getdocument.*" target="tools" />
|
<file src="..\dotnet-getdocument\bin\$configuration$\netcoreapp2.1\dotnet-getdocument.*" target="tools" />
|
||||||
<file src="..\GetDocumentInsider\bin\$configuration$\net461\GetDocument.Insider.*" target="tools\net461" />
|
<file src="..\GetDocumentInsider\bin\$configuration$\net461\GetDocument.Insider.*" target="tools\net461" />
|
||||||
<file src="..\GetDocumentInsider\bin\x86\$configuration$\net461\GetDocument.Insider.*" target="tools\net461-x86" />
|
<file src="..\GetDocumentInsider\bin\x86\$configuration$\net461\GetDocument.Insider.*" target="tools\net461-x86" />
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tasks
|
||||||
{
|
{
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
@ -8,7 +8,7 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
internal static class Resources
|
internal static class Resources
|
||||||
{
|
{
|
||||||
private static readonly ResourceManager _resourceManager
|
private static readonly ResourceManager _resourceManager
|
||||||
= new ResourceManager("Microsoft.Extensions.ApiDescription.Client.Resources", typeof(Resources).GetTypeInfo().Assembly);
|
= new ResourceManager("Microsoft.Extensions.ApiDescription.Tasks.Resources", typeof(Resources).GetTypeInfo().Assembly);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Multiple items have OutputPath='{0}'. All ServiceFileReference, ServiceProjectReference and ServiceUriReference items must have unique OutputPath metadata.
|
/// Multiple items have OutputPath='{0}'. All ServiceFileReference, ServiceProjectReference and ServiceUriReference items must have unique OutputPath metadata.
|
||||||
|
|
@ -1,16 +1,19 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_ApiDescriptionTasksAssemblyTarget Condition="'$(MSBuildRuntimeType)' == 'Core'">netstandard2.0</_ApiDescriptionTasksAssemblyTarget>
|
<_ApiDescriptionTasksAssemblyTarget
|
||||||
<_ApiDescriptionTasksAssemblyTarget Condition="'$(MSBuildRuntimeType)' != 'Core'">net461</_ApiDescriptionTasksAssemblyTarget>
|
Condition="'$(MSBuildRuntimeType)' == 'Core'">netstandard2.0</_ApiDescriptionTasksAssemblyTarget>
|
||||||
<_ApiDescriptionTasksAssemblyPath>$(MSBuildThisFileDirectory)/../tasks/$(_ApiDescriptionTasksAssemblyTarget)/Microsoft.Extensions.ApiDescription.Client.dll</_ApiDescriptionTasksAssemblyPath>
|
<_ApiDescriptionTasksAssemblyTarget
|
||||||
|
Condition="'$(MSBuildRuntimeType)' != 'Core'">net461</_ApiDescriptionTasksAssemblyTarget>
|
||||||
|
<_ApiDescriptionTasksAssemblyPath>$(MSBuildThisFileDirectory)/../tasks/$(_ApiDescriptionTasksAssemblyTarget)/Microsoft.Extensions.ApiDescription.Tasks.dll</_ApiDescriptionTasksAssemblyPath>
|
||||||
<_ApiDescriptionTasksAssemblyTarget />
|
<_ApiDescriptionTasksAssemblyTarget />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<UsingTask TaskName="GetCurrentItems" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
<UsingTask TaskName="GetCurrentItems" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
||||||
<UsingTask TaskName="GetFileReferenceMetadata" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
<UsingTask TaskName="GetFileReferenceMetadata" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
||||||
<UsingTask TaskName="GetProjectReferenceMetadata" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
<UsingTask TaskName="GetProjectReferenceMetadata" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
||||||
<UsingTask TaskName="GetUriReferenceMetadata" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
<UsingTask TaskName="GetUriReferenceMetadata" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
||||||
<UsingTask TaskName="Microsoft.Extensions.ApiDescription.Client.DownloadFile" AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
<UsingTask TaskName="Microsoft.Extensions.ApiDescription.Tasks.DownloadFile"
|
||||||
|
AssemblyFile="$(_ApiDescriptionTasksAssemblyPath)" />
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Settings users may update as they see fit. All $(...Directory) values are interpreted relative to the client
|
Settings users may update as they see fit. All $(...Directory) values are interpreted relative to the client
|
||||||
|
|
@ -32,7 +35,7 @@
|
||||||
<ServiceFileReferenceDirectory
|
<ServiceFileReferenceDirectory
|
||||||
Condition="'$(ServiceFileReferenceDirectory)' != ''">$([MSBuild]::EnsureTrailingSlash('$(ServiceFileReferenceDirectory)'))</ServiceFileReferenceDirectory>
|
Condition="'$(ServiceFileReferenceDirectory)' != ''">$([MSBuild]::EnsureTrailingSlash('$(ServiceFileReferenceDirectory)'))</ServiceFileReferenceDirectory>
|
||||||
|
|
||||||
<DefaultDocumentGeneratorDefaultOptions Condition="'$(DefaultDocumentGeneratorDefaultOptions)' == ''" />
|
<GenerateDefaultDocumentDefaultOptions Condition="'$(GenerateDefaultDocumentDefaultOptions)' == ''" />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
@ -42,37 +45,46 @@
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<ServiceProjectReference>
|
<ServiceProjectReference>
|
||||||
<!--
|
<!--
|
||||||
Name of the API description document generator. Builds will invoke a target named
|
Name of the API description document generator. Builds will invoke a target named
|
||||||
"%(DocumentGenerator)DocumentGenerator" to do actual document retrieval / generation.
|
"Generate%(DocumentGenerator)Document" to do actual document retrieval / generation.
|
||||||
-->
|
-->
|
||||||
<DocumentGenerator>Default</DocumentGenerator>
|
<DocumentGenerator>Default</DocumentGenerator>
|
||||||
|
|
||||||
<!-- Server project metadata which is likely applicable to all document generators. -->
|
<!-- Server project metadata which is likely applicable to all document generators. -->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Full path of the project's generated assembly. Corresponds to $(TargetPath). Because common code builds server
|
Server project's chosen configuration. Corresponds to $(Configuration) which likely matches client project's
|
||||||
projects, file exists prior to document generator invocation.
|
$(Configuration).
|
||||||
-->
|
-->
|
||||||
<ProjectAssemblyPath />
|
<Configuration />
|
||||||
<!-- Server project's chosen configuration. Likely matches client project's configuration. -->
|
|
||||||
<ProjectConfiguration />
|
|
||||||
<!--
|
<!--
|
||||||
Server project's extensions path. Corresponds to $(MSBuildProjectExtensionsPath). User must set this if
|
Server project's extensions path. Corresponds to $(MSBuildProjectExtensionsPath). User must set this if
|
||||||
server project's value is not 'obj/'.
|
server project's value is not 'obj/'.
|
||||||
-->
|
-->
|
||||||
<ProjectExtensionsPath />
|
<ProjectExtensionsPath />
|
||||||
<!-- Runtime identifier to use when building the server project. -->
|
<!-- Server project's target framework. Defaults to $(TargetFramework) or first of $(TargetFrameworks). -->
|
||||||
<ProjectRuntimeIdentifier />
|
<TargetFramework />
|
||||||
<!-- Server project's target framework. Defaults to $(TargetFramewok) or first of $(TargetFrameworks). -->
|
<!--
|
||||||
<ProjectTargetFramework />
|
Full path of the server project's generated assembly. Corresponds to $(TargetPath). Because common code builds
|
||||||
|
server projects, file exists prior to document generator invocation.
|
||||||
|
-->
|
||||||
|
<TargetPath />
|
||||||
|
<!--
|
||||||
|
Semicolon-separated list of targets in the server project that should be built. Default is empty, indicating
|
||||||
|
the default targets of the server project. Does not honor $(ProjectReferenceBuildTargets) because that property
|
||||||
|
is too general for these references and it's normally empty too.
|
||||||
|
-->
|
||||||
|
<Targets />
|
||||||
|
|
||||||
<!-- Metadata specific to the Default document generator (though other document generators are free to use it). -->
|
<!--
|
||||||
|
Metadata specific to the Default document generator (though other document generators are free to use it).
|
||||||
|
-->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Options added to Default document generator tool's command line. Defaults to
|
Options added to Default document generator tool's command line. Defaults to
|
||||||
$(DefaultDocumentGeneratorDefaultOptions) if that is set in the client project.
|
$(GenerateDefaultDocumentDefaultOptions) if that is set in the client project.
|
||||||
-->
|
-->
|
||||||
<DefaultDocumentGeneratorOptions />
|
<GenerateDefaultDocumentOptions />
|
||||||
<!--
|
<!--
|
||||||
Name of the document to generate. Passed to the %(Method) when using Default document generator. Default is set
|
Name of the document to generate. Passed to the %(Method) when using Default document generator. Default is set
|
||||||
in server project, falling back to "v1".
|
in server project, falling back to "v1".
|
||||||
|
|
@ -108,7 +120,8 @@
|
||||||
<ClassName />
|
<ClassName />
|
||||||
<!--
|
<!--
|
||||||
Code generator to use. Required and must end with "CSharp" or "TypeScript" (the currently-supported target
|
Code generator to use. Required and must end with "CSharp" or "TypeScript" (the currently-supported target
|
||||||
languages). Builds will invoke a target named "%(CodeGenerator)CodeGenerator" to do actual code generation.
|
languages) unless %(OutputPath) is set. Builds will invoke a target named "Generate%(CodeGenerator)" to do
|
||||||
|
actual code generation.
|
||||||
-->
|
-->
|
||||||
<CodeGenerator />
|
<CodeGenerator />
|
||||||
<!--
|
<!--
|
||||||
|
|
@ -2,34 +2,34 @@
|
||||||
<Project>
|
<Project>
|
||||||
<!-- Internal settings. Not intended for customization. -->
|
<!-- Internal settings. Not intended for customization. -->
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ServiceProjectReferenceGeneratorDependsOn>
|
<GenerateServiceProjectReferenceDocumentsDependsOn>
|
||||||
_ServiceProjectReferenceGenerator_GetTargetFramework;
|
_GetTargetFrameworkForServiceProjectReferences;
|
||||||
_ServiceProjectReferenceGenerator_GetProjectTargetPath;
|
_GetTargetPathForServiceProjectReferences;
|
||||||
_ServiceProjectReferenceGenerator_GetMetadata;
|
_GetMetadataForServiceProjectReferences;
|
||||||
_ServiceProjectReferenceGenerator_Build;
|
_BuildServiceProjectReferences;
|
||||||
_ServiceProjectReferenceGenerator_Core;
|
_GenerateServiceProjectReferenceDocuments;
|
||||||
_ServiceProjectReferenceGenerator_SetMetadata
|
_CreateFileItemsForServiceProjectReferences
|
||||||
</ServiceProjectReferenceGeneratorDependsOn>
|
</GenerateServiceProjectReferenceDocumentsDependsOn>
|
||||||
<ServiceUriReferenceGeneratorDependsOn>
|
<GenerateServiceUriReferenceDocumentsDependsOn>
|
||||||
_ServiceUriReferenceGenerator_GetMetadata;
|
_GetMetadataForServiceUriReferences;
|
||||||
_ServiceUriReferenceGenerator_Core
|
_GenerateServiceUriReferenceDocuments
|
||||||
</ServiceUriReferenceGeneratorDependsOn>
|
</GenerateServiceUriReferenceDocumentsDependsOn>
|
||||||
<ServiceFileReferenceGeneratorDependsOn>
|
<GenerateServiceFileReferenceCodesDependsOn>
|
||||||
ServiceProjectReferenceGenerator;
|
GenerateServiceProjectReferenceDocuments;
|
||||||
ServiceUriReferenceGenerator;
|
GenerateServiceUriReferenceDocuments;
|
||||||
_ServiceFileReferenceGenerator_GetMetadata;
|
_GetMetadataForServiceFileReferences;
|
||||||
_ServiceFileReferenceGenerator_Core;
|
_GenerateServiceFileReferenceCodes;
|
||||||
_ServiceFileReferenceGenerator_SetMetadata
|
_CreateCompileItemsForServiceFileReferences
|
||||||
</ServiceFileReferenceGeneratorDependsOn>
|
</GenerateServiceFileReferenceCodesDependsOn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- ServiceProjectReference support -->
|
<!-- ServiceProjectReference support -->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Metadata setup phase 1: Ensure items have TargetFramework metadata. Call GetTargetFrameworks in the target project.
|
Metadata setup phase 1: Ensure items have TargetFramework metadata. Calls GetTargetFrameworks in the target
|
||||||
Inputs and outputs cause MSBuild to run target unconditionally and to batch it (run once per project).
|
project. Inputs and outputs cause MSBuild to run target unconditionally and to batch it (run once per project).
|
||||||
-->
|
-->
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_GetTargetFramework"
|
<Target Name="_GetTargetFrameworkForServiceProjectReferences"
|
||||||
Inputs="%(ServiceProjectReference.FullPath)"
|
Inputs="%(ServiceProjectReference.FullPath)"
|
||||||
Outputs="<not-a-file !>">
|
Outputs="<not-a-file !>">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
@ -56,8 +56,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ServiceProjectReference Update="@(ServiceProjectReference)" Condition="'%(FullPath)' == '$(_FullPath)'">
|
<ServiceProjectReference Update="@(ServiceProjectReference)" Condition="'%(FullPath)' == '$(_FullPath)'">
|
||||||
<ProjectTargetFramework
|
<TargetFramework Condition="'%(TargetFramework)' == ''">$(_TargetFramework)</TargetFramework>
|
||||||
Condition="'%(ProjectTargetFramework)' == ''">$(_TargetFramework)</ProjectTargetFramework>
|
|
||||||
</ServiceProjectReference>
|
</ServiceProjectReference>
|
||||||
<_Temporary Remove="@(_Temporary)" />
|
<_Temporary Remove="@(_Temporary)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
@ -70,16 +69,16 @@
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Metadata setup phase 2: Ensure items have ProjectTargetPath metadata. Call GetTargetPath in the target project.
|
Metadata setup phase 2: Ensure items have TargetPath metadata. Calls GetTargetPath in the target project.
|
||||||
Inputs and outputs cause MSBuild to run target unconditionally and batch it (run once per TargetFramework x
|
Inputs and outputs cause MSBuild to run target unconditionally and batch it (run once per TargetFramework x
|
||||||
project combination).
|
project combination).
|
||||||
-->
|
-->
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_GetProjectTargetPath"
|
<Target Name="_GetTargetPathForServiceProjectReferences"
|
||||||
Inputs="%(ServiceProjectReference.TargetFramework)%(FullPath)')"
|
Inputs="%(ServiceProjectReference.TargetFramework)%(FullPath)')"
|
||||||
Outputs="<not-a-file !>">
|
Outputs="<not-a-file !>">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_FullPath>%(ServiceProjectReference.FullPath)</_FullPath>
|
<_FullPath>%(ServiceProjectReference.FullPath)</_FullPath>
|
||||||
<_TargetFramework>%(ServiceProjectReference.ProjectTargetFramework)</_TargetFramework>
|
<_TargetFramework>%(ServiceProjectReference.TargetFramework)</_TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<_Temporary Remove="@(_Temporary)" />
|
<_Temporary Remove="@(_Temporary)" />
|
||||||
|
|
@ -95,25 +94,25 @@
|
||||||
</MSBuild>
|
</MSBuild>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_ProjectTargetPath>%(_Temporary.FullPath)</_ProjectTargetPath>
|
<_TargetPath>%(_Temporary.FullPath)</_TargetPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ServiceProjectReference Update="@(ServiceProjectReference)"
|
<ServiceProjectReference Update="@(ServiceProjectReference)"
|
||||||
Condition="'%(FullPath)' == '$(_FullPath)' AND '%(ProjectTargetFramework)' == '$(_TargetFramework)'">
|
Condition="'%(FullPath)' == '$(_FullPath)' AND '%(TargetFramework)' == '$(_TargetFramework)'">
|
||||||
<ProjectTargetPath>$(_ProjectTargetPath)</ProjectTargetPath>
|
<TargetPath>$(_TargetPath)</TargetPath>
|
||||||
</ServiceProjectReference>
|
</ServiceProjectReference>
|
||||||
<_Temporary Remove="@(_Temporary)" />
|
<_Temporary Remove="@(_Temporary)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_FullPath />
|
<_FullPath />
|
||||||
<_ProjectTargetPath />
|
<_TargetPath />
|
||||||
<_TargetFramework />
|
<_TargetFramework />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!-- Metadata setup phase 3: Ensure items have DocumentPath metadata. -->
|
<!-- Metadata setup phase 3: Ensure items have DocumentPath metadata. -->
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_GetMetadata" Condition="'@(ServiceProjectReference)' != ''">
|
<Target Name="_GetMetadataForServiceProjectReferences" Condition="'@(ServiceProjectReference)' != ''">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<_Temporary Remove="@(_Temporary)" />
|
<_Temporary Remove="@(_Temporary)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
@ -132,38 +131,40 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_Build"
|
<Target Name="_BuildServiceProjectReferences"
|
||||||
Condition="'$(BuildProjectReferences)' == 'true'"
|
Condition="'$(BuildProjectReferences)' == 'true'"
|
||||||
Inputs="@(ServiceProjectReference)"
|
Inputs="@(ServiceProjectReference)"
|
||||||
Outputs="%(ProjectTargetPath)">
|
Outputs="%(TargetPath)">
|
||||||
<MSBuild Projects="@(ServiceProjectReference -> Distinct())"
|
<MSBuild Projects="@(ServiceProjectReference -> Distinct())"
|
||||||
BuildInParallel="$(BuildInParallel)"
|
BuildInParallel="$(BuildInParallel)"
|
||||||
RemoveProperties="TargetFramework;TargetFrameworks;RuntimeIdentifier"
|
RemoveProperties="TargetFramework;TargetFrameworks;RuntimeIdentifier"
|
||||||
Targets="Restore;Build" />
|
Targets="%(Targets)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_GetItems">
|
<Target Name="_GetCurrentServiceProjectReference">
|
||||||
<GetCurrentItems Input="$(GeneratorMetadata)">
|
<GetCurrentItems Input="$(GeneratorMetadata)">
|
||||||
<Output TaskParameter="Outputs" ItemName="CurrentServiceProjectReference" />
|
<Output TaskParameter="Outputs" ItemName="CurrentServiceProjectReference" />
|
||||||
</GetCurrentItems>
|
</GetCurrentItems>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_Inner"
|
<Target Name="_GenerateServiceProjectReferenceDocument"
|
||||||
DependsOnTargets="_ServiceProjectReferenceGenerator_GetItems;$(GeneratorTarget)" />
|
DependsOnTargets="_GetCurrentServiceProjectReference;$(GeneratorTarget)" />
|
||||||
|
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_Core" Inputs="@(ServiceProjectReference)" Outputs="%(DocumentPath)">
|
<Target Name="_GenerateServiceProjectReferenceDocuments"
|
||||||
|
Inputs="@(ServiceProjectReference)"
|
||||||
|
Outputs="%(DocumentPath)">
|
||||||
<MSBuild BuildInParallel="$(BuildInParallel)"
|
<MSBuild BuildInParallel="$(BuildInParallel)"
|
||||||
Projects="$(MSBuildProjectFullPath)"
|
Projects="$(MSBuildProjectFullPath)"
|
||||||
Properties="GeneratorTargetPath=%(ServiceProjectReference.DocumentPath);GeneratorTarget=%(DocumentGenerator)DocumentGenerator;GeneratorMetadata=%(SerializedMetadata)"
|
Properties="GeneratorTargetPath=%(ServiceProjectReference.DocumentPath);GeneratorTarget=Generate%(DocumentGenerator)Document;GeneratorMetadata=%(SerializedMetadata)"
|
||||||
RemoveProperties="TargetFrameworks"
|
RemoveProperties="TargetFrameworks"
|
||||||
Targets="_ServiceProjectReferenceGenerator_Inner" />
|
Targets="_GenerateServiceProjectReferenceDocument" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceProjectReferenceGenerator_SetMetadata" Condition="'@(ServiceProjectReference)' != ''">
|
<Target Name="_CreateFileItemsForServiceProjectReferences" Condition="'@(ServiceProjectReference)' != ''">
|
||||||
<!-- _ServiceProjectReferenceGenerator_GetMetadata guarantees %(DocumentPath) values are unique. -->
|
<!-- GetProjectReferenceMetadata task guarantees %(DocumentPath) values are unique. -->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ServiceFileReference Remove="@(ServiceProjectReference -> '%(DocumentPath)')" />
|
<ServiceFileReference Remove="@(ServiceProjectReference -> '%(DocumentPath)')" />
|
||||||
<!-- Condition here is temporary. Useful while DefaultDocumentGenerator fails. -->
|
<!-- Condition here is temporary. Useful while GenerateDefaultDocument fails. -->
|
||||||
<ServiceFileReference Include="@(ServiceProjectReference -> '%(DocumentPath)')"
|
<ServiceFileReference Include="@(ServiceProjectReference -> '%(DocumentPath)')"
|
||||||
Condition="Exists('%(ServiceProjectReference.DocumentPath)')">
|
Condition="Exists('%(ServiceProjectReference.DocumentPath)')">
|
||||||
<SourceProject>%(ServiceProjectReference.FullPath)</SourceProject>
|
<SourceProject>%(ServiceProjectReference.FullPath)</SourceProject>
|
||||||
|
|
@ -171,22 +172,22 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="ServiceProjectReferenceGenerator" DependsOnTargets="$(ServiceProjectReferenceGeneratorDependsOn)" />
|
<Target Name="GenerateServiceProjectReferenceDocuments"
|
||||||
|
DependsOnTargets="$(GenerateServiceProjectReferenceDocumentsDependsOn)" />
|
||||||
|
|
||||||
<!-- DefaultDocumentGenerator -->
|
<!-- GenerateDefaultDocument -->
|
||||||
|
|
||||||
<Target Name="DefaultDocumentGenerator">
|
<Target Name="GenerateDefaultDocument">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<!-- @(CurrentServiceProjectReference) item group will never contain more than one item. -->
|
<!-- @(CurrentServiceProjectReference) item group will never contain more than one item. -->
|
||||||
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
||||||
<Command>dotnet $(MSBuildThisFileDirectory)/../tools/dotnet-getdocument.dll --project %(FullPath) --output %(DocumentPath)</Command>
|
<Command>dotnet $(MSBuildThisFileDirectory)/../tools/dotnet-getdocument.dll --project %(FullPath)</Command>
|
||||||
<DefaultDocumentGeneratorOptions
|
<Configuration Condition="'%(Configuration)' == ''">$(Configuration)</Configuration>
|
||||||
Condition="'%(DefaultDocumentGeneratorOptions)' == ''">$(DefaultDocumentGeneratorDefaultOptions)</DefaultDocumentGeneratorOptions>
|
<GenerateDefaultDocumentOptions
|
||||||
<ProjectConfiguration
|
Condition="'%(GenerateDefaultDocumentOptions)' == ''">$(GenerateDefaultDocumentDefaultOptions)</GenerateDefaultDocumentOptions>
|
||||||
Condition="'%(ProjectConfiguration)' == ''">$(Configuration)</ProjectConfiguration>
|
|
||||||
</CurrentServiceProjectReference>
|
</CurrentServiceProjectReference>
|
||||||
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
||||||
<Command>%(Command) --framework %(ProjectTargetFramework)</Command>
|
<Command>%(Command) --framework %(TargetFramework) --output %(DocumentPath)</Command>
|
||||||
</CurrentServiceProjectReference>
|
</CurrentServiceProjectReference>
|
||||||
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
||||||
<Command Condition="'%(Method)' != ''">%(Command) --method %(Method)</Command>
|
<Command Condition="'%(Method)' != ''">%(Command) --method %(Method)</Command>
|
||||||
|
|
@ -195,11 +196,15 @@
|
||||||
<Command Condition="'%(Service)' != ''">%(Command) --service %(Service)</Command>
|
<Command Condition="'%(Service)' != ''">%(Command) --service %(Service)</Command>
|
||||||
</CurrentServiceProjectReference>
|
</CurrentServiceProjectReference>
|
||||||
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
||||||
<Command>%(Command) --configuration %(ProjectConfiguration) %(DefaultDocumentGeneratorOptions)</Command>
|
<Command
|
||||||
|
Condition="'%(ProjectExtensionsPath)' != ''">%(Command) --projectExtensionsPath %(ProjectExtensionsPath)</Command>
|
||||||
|
</CurrentServiceProjectReference>
|
||||||
|
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
|
||||||
|
<Command>%(Command) --configuration %(Configuration) %(GenerateDefaultDocumentOptions)</Command>
|
||||||
</CurrentServiceProjectReference>
|
</CurrentServiceProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<Message Importance="high" Text="%0ADefaultDocumentGenerator:" />
|
<Message Importance="high" Text="%0AGenerateDefaultDocument:" />
|
||||||
<Message Importance="high" Text=" %(CurrentServiceProjectReference.Command)" />
|
<Message Importance="high" Text=" %(CurrentServiceProjectReference.Command)" />
|
||||||
<Exec Command="%(CurrentServiceProjectReference.Command)"
|
<Exec Command="%(CurrentServiceProjectReference.Command)"
|
||||||
IgnoreExitCode="$([System.IO.File]::Exists('%(DocumentPath)'))" />
|
IgnoreExitCode="$([System.IO.File]::Exists('%(DocumentPath)'))" />
|
||||||
|
|
@ -207,7 +212,7 @@
|
||||||
|
|
||||||
<!-- ServiceUriReference support -->
|
<!-- ServiceUriReference support -->
|
||||||
|
|
||||||
<Target Name="_ServiceUriReferenceGenerator_GetMetadata" Condition="'@(ServiceUriReference)' != ''">
|
<Target Name="_GetMetadataForServiceUriReferences" Condition="'@(ServiceUriReference)' != ''">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<_Temporary Remove="@(_Temporary)" />
|
<_Temporary Remove="@(_Temporary)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
@ -223,12 +228,12 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceUriReferenceGenerator_Core" Condition="'@(ServiceUriReference)' != ''">
|
<Target Name="_GenerateServiceUriReferenceDocuments" Condition="'@(ServiceUriReference)' != ''">
|
||||||
<Microsoft.Extensions.ApiDescription.Client.DownloadFile Uri="%(ServiceUriReference.Identity)"
|
<Microsoft.Extensions.ApiDescription.Tasks.DownloadFile Uri="%(ServiceUriReference.Identity)"
|
||||||
DestinationPath="%(DocumentPath)"
|
DestinationPath="%(DocumentPath)"
|
||||||
Overwrite="$(ServiceUriReferenceCheckIfNewer)" />
|
Overwrite="$(ServiceUriReferenceCheckIfNewer)" />
|
||||||
|
|
||||||
<!-- _ServiceUriReferenceGenerator_GetMetadata guarantees %(DocumentPath) values are unique. -->
|
<!-- GetUriReferenceMetadata task guarantees %(DocumentPath) values are unique. -->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ServiceFileReference Remove="@(ServiceUriReference -> '%(DocumentPath)')" />
|
<ServiceFileReference Remove="@(ServiceUriReference -> '%(DocumentPath)')" />
|
||||||
<ServiceFileReference Include="@(ServiceUriReference -> '%(DocumentPath)')">
|
<ServiceFileReference Include="@(ServiceUriReference -> '%(DocumentPath)')">
|
||||||
|
|
@ -237,11 +242,12 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="ServiceUriReferenceGenerator" DependsOnTargets="$(ServiceUriReferenceGeneratorDependsOn)" />
|
<Target Name="GenerateServiceUriReferenceDocuments"
|
||||||
|
DependsOnTargets="$(GenerateServiceUriReferenceDocumentsDependsOn)" />
|
||||||
|
|
||||||
<!-- ServiceFileReference support -->
|
<!-- ServiceFileReference support -->
|
||||||
|
|
||||||
<Target Name="_ServiceFileReferenceGenerator_GetMetadata" Condition="'@(ServiceFileReference)' != ''">
|
<Target Name="_GetMetadataForServiceFileReferences" Condition="'@(ServiceFileReference)' != ''">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<_Temporary Remove="@(_Temporary)" />
|
<_Temporary Remove="@(_Temporary)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
@ -260,28 +266,27 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceFileReferenceGenerator_GetItems">
|
<Target Name="_GetCurrentServiceFileReference">
|
||||||
<GetCurrentItems Input="$(GeneratorMetadata)">
|
<GetCurrentItems Input="$(GeneratorMetadata)">
|
||||||
<Output TaskParameter="Outputs" ItemName="CurrentServiceFileReference" />
|
<Output TaskParameter="Outputs" ItemName="CurrentServiceFileReference" />
|
||||||
</GetCurrentItems>
|
</GetCurrentItems>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceFileReferenceGenerator_Inner"
|
<Target Name="_GenerateServiceFileReferenceCode"
|
||||||
DependsOnTargets="_ServiceFileReferenceGenerator_GetItems;$(GeneratorTarget)" />
|
DependsOnTargets="_GetCurrentServiceFileReference;$(GeneratorTarget)" />
|
||||||
|
|
||||||
<Target Name="_ServiceFileReferenceGenerator_Core" Inputs="@(ServiceFileReference)" Outputs="%(OutputPath)">
|
<Target Name="_GenerateServiceFileReferenceCodes" Inputs="@(ServiceFileReference)" Outputs="%(OutputPath)">
|
||||||
<MSBuild BuildInParallel="$(BuildInParallel)"
|
<MSBuild BuildInParallel="$(BuildInParallel)"
|
||||||
Projects="$(MSBuildProjectFullPath)"
|
Projects="$(MSBuildProjectFullPath)"
|
||||||
Properties="GeneratorTargetPath=%(ServiceFileReference.OutputPath);GeneratorTarget=%(CodeGenerator)CodeGenerator;GeneratorMetadata=%(SerializedMetadata)"
|
Properties="GeneratorTargetPath=%(ServiceFileReference.OutputPath);GeneratorTarget=Generate%(CodeGenerator);GeneratorMetadata=%(SerializedMetadata)"
|
||||||
RemoveProperties="TargetFrameworks"
|
RemoveProperties="TargetFrameworks"
|
||||||
Targets="_ServiceFileReferenceGenerator_Inner" />
|
Targets="_GenerateServiceFileReferenceCode" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="_ServiceFileReferenceGenerator_SetMetadata" Condition="'@(ServiceFileReference)' != ''">
|
<Target Name="_CreateCompileItemsForServiceFileReferences" Condition="'@(ServiceFileReference)' != ''">
|
||||||
<!--
|
<!--
|
||||||
While %(DocumentPath) metadata may include duplicates (due to overlaps between ServiceUriReference and
|
While %(DocumentPath) metadata may include duplicates (due to overlaps between ServiceUriReference and
|
||||||
ServiceProjectReference items), _ServiceFileReferenceGenerator_GetMetadata guarantees %(OutputPath) values are
|
ServiceProjectReference items), GetFileReferenceMetadata task guarantees %(OutputPath) values are unique.
|
||||||
unique.
|
|
||||||
-->
|
-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<_Files Remove="@(_Files)" />
|
<_Files Remove="@(_Files)" />
|
||||||
|
|
@ -324,7 +329,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="ServiceFileReferenceGenerator"
|
<Target Name="GenerateServiceFileReferenceCodes"
|
||||||
BeforeTargets="BeforeCompile"
|
BeforeTargets="BeforeCompile"
|
||||||
DependsOnTargets="$(ServiceFileReferenceGeneratorDependsOn)" />
|
DependsOnTargets="$(GenerateServiceFileReferenceCodesDependsOn)" />
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<Project>
|
<Project>
|
||||||
<Target Name="ServiceFileReferenceGenerator" BeforeTargets="BeforeCompile">
|
<Target Name="GenerateServiceFileReferenceCodes" BeforeTargets="BeforeCompile">
|
||||||
<MsBuild Projects="$(MSBuildProjectFile)"
|
<MsBuild Projects="$(MSBuildProjectFile)"
|
||||||
Targets="ServiceFileReferenceGenerator"
|
Targets="GenerateServiceFileReferenceCodes"
|
||||||
Properties="TargetFramework=$(TargetFrameworks.Split(';')[0])"
|
Properties="TargetFramework=$(TargetFrameworks.Split(';')[0])"
|
||||||
RemoveProperties="TargetFrameworks;RuntimeIdentifier" />
|
RemoveProperties="TargetFrameworks;RuntimeIdentifier" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
@ -10,30 +10,30 @@ using Microsoft.DotNet.Cli.CommandLine;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
namespace Microsoft.Extensions.ApiDescription.Tool.Commands
|
||||||
{
|
{
|
||||||
internal class InvokeCommand : HelpCommandBase
|
internal class InvokeCommand : HelpCommandBase
|
||||||
{
|
{
|
||||||
private const string InsideManName = "GetDocument.Insider";
|
private const string InsideManName = "GetDocument.Insider";
|
||||||
|
|
||||||
|
private IList<string> _args;
|
||||||
private CommandOption _configuration;
|
private CommandOption _configuration;
|
||||||
private CommandOption _framework;
|
|
||||||
private CommandOption _msbuildprojectextensionspath;
|
|
||||||
private CommandOption _output;
|
private CommandOption _output;
|
||||||
private CommandOption _project;
|
private CommandOption _project;
|
||||||
|
private CommandOption _projectExtensionsPath;
|
||||||
private CommandOption _runtime;
|
private CommandOption _runtime;
|
||||||
private IList<string> _args;
|
private CommandOption _targetFramework;
|
||||||
|
|
||||||
public override void Configure(CommandLineApplication command)
|
public override void Configure(CommandLineApplication command)
|
||||||
{
|
{
|
||||||
var options = new ProjectOptions();
|
var options = new ProjectOptions();
|
||||||
options.Configure(command);
|
options.Configure(command);
|
||||||
|
|
||||||
_project = options.Project;
|
|
||||||
_framework = options.Framework;
|
|
||||||
_configuration = options.Configuration;
|
_configuration = options.Configuration;
|
||||||
|
_project = options.Project;
|
||||||
|
_projectExtensionsPath = options.ProjectExtensionsPath;
|
||||||
_runtime = options.Runtime;
|
_runtime = options.Runtime;
|
||||||
_msbuildprojectextensionspath = options.MSBuildProjectExtensionsPath;
|
_targetFramework = options.TargetFramework;
|
||||||
|
|
||||||
_output = command.Option("--output <Path>", Resources.OutputDescription);
|
_output = command.Option("--output <Path>", Resources.OutputDescription);
|
||||||
command.VersionOption("--version", ProductInfo.GetVersion);
|
command.VersionOption("--version", ProductInfo.GetVersion);
|
||||||
|
|
@ -52,11 +52,11 @@ namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
||||||
|
|
||||||
var project = Project.FromFile(
|
var project = Project.FromFile(
|
||||||
projectFile,
|
projectFile,
|
||||||
_msbuildprojectextensionspath.Value(),
|
_projectExtensionsPath.Value(),
|
||||||
_framework.Value(),
|
_targetFramework.Value(),
|
||||||
_configuration.Value(),
|
_configuration.Value(),
|
||||||
_runtime.Value());
|
_runtime.Value());
|
||||||
if (!File.Exists(project.AssemblyPath))
|
if (!File.Exists(project.TargetPath))
|
||||||
{
|
{
|
||||||
throw new CommandException(Resources.MustBuild);
|
throw new CommandException(Resources.MustBuild);
|
||||||
}
|
}
|
||||||
|
|
@ -95,16 +95,16 @@ namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
||||||
if (targetFramework.Version < new Version(2, 0))
|
if (targetFramework.Version < new Version(2, 0))
|
||||||
{
|
{
|
||||||
throw new CommandException(
|
throw new CommandException(
|
||||||
Resources.FormatNETCoreApp1Project(project.Name, targetFramework.Version));
|
Resources.FormatNETCoreApp1Project(project.ProjectName, targetFramework.Version));
|
||||||
}
|
}
|
||||||
|
|
||||||
args.Add("exec");
|
args.Add("exec");
|
||||||
args.Add("--depsFile");
|
args.Add("--depsFile");
|
||||||
args.Add(project.DepsPath);
|
args.Add(project.ProjectDepsFilePath);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(project.AssetsPath))
|
if (!string.IsNullOrEmpty(project.ProjectAssetsFile))
|
||||||
{
|
{
|
||||||
using (var reader = new JsonTextReader(File.OpenText(project.AssetsPath)))
|
using (var reader = new JsonTextReader(File.OpenText(project.ProjectAssetsFile)))
|
||||||
{
|
{
|
||||||
var projectAssets = JToken.ReadFrom(reader);
|
var projectAssets = JToken.ReadFrom(reader);
|
||||||
var packageFolders = projectAssets["packageFolders"]
|
var packageFolders = projectAssets["packageFolders"]
|
||||||
|
|
@ -119,10 +119,10 @@ namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (File.Exists(project.RuntimeConfigPath))
|
if (File.Exists(project.ProjectRuntimeConfigFilePath))
|
||||||
{
|
{
|
||||||
args.Add("--runtimeConfig");
|
args.Add("--runtimeConfig");
|
||||||
args.Add(project.RuntimeConfigPath);
|
args.Add(project.ProjectRuntimeConfigFilePath);
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(project.RuntimeFrameworkVersion))
|
else if (!string.IsNullOrEmpty(project.RuntimeFrameworkVersion))
|
||||||
{
|
{
|
||||||
|
|
@ -134,16 +134,16 @@ namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ".NETStandard":
|
case ".NETStandard":
|
||||||
throw new CommandException(Resources.FormatNETStandardProject(project.Name));
|
throw new CommandException(Resources.FormatNETStandardProject(project.ProjectName));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new CommandException(
|
throw new CommandException(
|
||||||
Resources.FormatUnsupportedFramework(project.Name, targetFramework.Identifier));
|
Resources.FormatUnsupportedFramework(project.ProjectName, targetFramework.Identifier));
|
||||||
}
|
}
|
||||||
|
|
||||||
args.AddRange(_args);
|
args.AddRange(_args);
|
||||||
args.Add("--assembly");
|
args.Add("--assembly");
|
||||||
args.Add(project.AssemblyPath);
|
args.Add(project.TargetPath);
|
||||||
args.Add("--tools-directory");
|
args.Add("--tools-directory");
|
||||||
args.Add(toolsDirectory);
|
args.Add(toolsDirectory);
|
||||||
|
|
||||||
|
|
@ -180,7 +180,7 @@ namespace Microsoft.Extensions.ApiDescription.Client.Commands
|
||||||
args.Add("--prefix-output");
|
args.Add("--prefix-output");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Exe.Run(executable, args, project.Directory);
|
return Exe.Run(executable, args, project.ProjectDirectory);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal static class Exe
|
internal static class Exe
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
using Microsoft.Extensions.ApiDescription.Client.Commands;
|
using Microsoft.Extensions.ApiDescription.Tool.Commands;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal static class Program
|
internal static class Program
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,12 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using IODirectory = System.IO.Directory;
|
using IODirectory = System.IO.Directory;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal class Project
|
internal class Project
|
||||||
{
|
{
|
||||||
private const string ResourceFilename = "ServiceProjectReferenceMetadata.targets";
|
private const string ResourceFilename = "ServiceProjectReferenceMetadata.targets";
|
||||||
private const string MSBuildResourceName = "Microsoft.Extensions.ApiDescription.Client." + ResourceFilename;
|
private const string MSBuildResourceName = "Microsoft.Extensions.ApiDescription.Tool." + ResourceFilename;
|
||||||
|
|
||||||
private Project()
|
private Project()
|
||||||
{
|
{
|
||||||
|
|
@ -21,35 +21,33 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
|
|
||||||
public string AssemblyName { get; private set; }
|
public string AssemblyName { get; private set; }
|
||||||
|
|
||||||
public string AssemblyPath { get; private set; }
|
public string ConfigPath { get; private set; }
|
||||||
|
|
||||||
public string AssetsPath { get; private set; }
|
|
||||||
|
|
||||||
public string Configuration { get; private set; }
|
public string Configuration { get; private set; }
|
||||||
|
|
||||||
public string ConfigPath { get; private set; }
|
|
||||||
|
|
||||||
public string DefaultDocumentName { get; private set; }
|
public string DefaultDocumentName { get; private set; }
|
||||||
|
|
||||||
public string DefaultMethod { get; private set; }
|
public string DefaultMethod { get; private set; }
|
||||||
|
|
||||||
public string DefaultService { get; private set; }
|
public string DefaultService { get; private set; }
|
||||||
|
|
||||||
public string DepsPath { get; private set; }
|
|
||||||
|
|
||||||
public string Directory { get; private set; }
|
|
||||||
|
|
||||||
public string ExtensionsPath { get; private set; }
|
|
||||||
|
|
||||||
public string Name { get; private set; }
|
|
||||||
|
|
||||||
public string OutputPath { get; private set; }
|
public string OutputPath { get; private set; }
|
||||||
|
|
||||||
public string Platform { get; private set; }
|
public string Platform { get; private set; }
|
||||||
|
|
||||||
public string PlatformTarget { get; private set; }
|
public string PlatformTarget { get; private set; }
|
||||||
|
|
||||||
public string RuntimeConfigPath { get; private set; }
|
public string ProjectAssetsFile { get; private set; }
|
||||||
|
|
||||||
|
public string ProjectDepsFilePath { get; private set; }
|
||||||
|
|
||||||
|
public string ProjectDirectory { get; private set; }
|
||||||
|
|
||||||
|
public string ProjectExtensionsPath { get; private set; }
|
||||||
|
|
||||||
|
public string ProjectName { get; private set; }
|
||||||
|
|
||||||
|
public string ProjectRuntimeConfigFilePath { get; private set; }
|
||||||
|
|
||||||
public string RuntimeFrameworkVersion { get; private set; }
|
public string RuntimeFrameworkVersion { get; private set; }
|
||||||
|
|
||||||
|
|
@ -59,6 +57,8 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
|
|
||||||
public string TargetFrameworkMoniker { get; private set; }
|
public string TargetFrameworkMoniker { get; private set; }
|
||||||
|
|
||||||
|
public string TargetPath { get; private set; }
|
||||||
|
|
||||||
public static Project FromFile(
|
public static Project FromFile(
|
||||||
string projectFile,
|
string projectFile,
|
||||||
string buildExtensionsDirectory,
|
string buildExtensionsDirectory,
|
||||||
|
|
@ -127,7 +127,9 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
throw new CommandException(Resources.GetMetadataFailed);
|
throw new CommandException(Resources.GetMetadataFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
metadata = File.ReadLines(metadataPath).Select(l => l.Split(new[] { ':' }, 2))
|
metadata = File
|
||||||
|
.ReadLines(metadataPath)
|
||||||
|
.Select(l => l.Split(new[] { ':' }, 2))
|
||||||
.ToDictionary(s => s[0], s => s[1].TrimStart());
|
.ToDictionary(s => s[0], s => s[1].TrimStart());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|
@ -143,79 +145,88 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
DefaultService = metadata[nameof(DefaultService)],
|
DefaultService = metadata[nameof(DefaultService)],
|
||||||
|
|
||||||
AssemblyName = metadata[nameof(AssemblyName)],
|
AssemblyName = metadata[nameof(AssemblyName)],
|
||||||
AssemblyPath = metadata[nameof(AssemblyPath)],
|
|
||||||
AssetsPath = metadata[nameof(AssetsPath)],
|
|
||||||
Configuration = metadata[nameof(Configuration)],
|
Configuration = metadata[nameof(Configuration)],
|
||||||
DepsPath = metadata[nameof(DepsPath)],
|
|
||||||
Directory = metadata[nameof(Directory)],
|
|
||||||
ExtensionsPath = metadata[nameof(ExtensionsPath)],
|
|
||||||
Name = metadata[nameof(Name)],
|
|
||||||
OutputPath = metadata[nameof(OutputPath)],
|
OutputPath = metadata[nameof(OutputPath)],
|
||||||
Platform = metadata[nameof(Platform)],
|
Platform = metadata[nameof(Platform)],
|
||||||
PlatformTarget = metadata[nameof(PlatformTarget)] ?? metadata[nameof(Platform)],
|
PlatformTarget = metadata[nameof(PlatformTarget)] ?? metadata[nameof(Platform)],
|
||||||
RuntimeConfigPath = metadata[nameof(RuntimeConfigPath)],
|
ProjectAssetsFile = metadata[nameof(ProjectAssetsFile)],
|
||||||
|
ProjectDepsFilePath = metadata[nameof(ProjectDepsFilePath)],
|
||||||
|
ProjectDirectory = metadata[nameof(ProjectDirectory)],
|
||||||
|
ProjectExtensionsPath = metadata[nameof(ProjectExtensionsPath)],
|
||||||
|
ProjectName = metadata[nameof(ProjectName)],
|
||||||
|
ProjectRuntimeConfigFilePath = metadata[nameof(ProjectRuntimeConfigFilePath)],
|
||||||
RuntimeFrameworkVersion = metadata[nameof(RuntimeFrameworkVersion)],
|
RuntimeFrameworkVersion = metadata[nameof(RuntimeFrameworkVersion)],
|
||||||
RuntimeIdentifier = metadata[nameof(RuntimeIdentifier)],
|
RuntimeIdentifier = metadata[nameof(RuntimeIdentifier)],
|
||||||
TargetFramework = metadata[nameof(TargetFramework)],
|
TargetFramework = metadata[nameof(TargetFramework)],
|
||||||
TargetFrameworkMoniker = metadata[nameof(TargetFrameworkMoniker)],
|
TargetFrameworkMoniker = metadata[nameof(TargetFrameworkMoniker)],
|
||||||
|
TargetPath = metadata[nameof(TargetPath)],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(project.AssemblyPath))
|
|
||||||
{
|
|
||||||
throw new CommandException(Resources.FormatGetMetadataValueFailed(nameof(AssemblyPath), "TargetPath"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(project.Directory))
|
|
||||||
{
|
|
||||||
throw new CommandException(Resources.FormatGetMetadataValueFailed(nameof(Directory), "ProjectDir"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(project.OutputPath))
|
if (string.IsNullOrEmpty(project.OutputPath))
|
||||||
{
|
{
|
||||||
throw new CommandException(Resources.FormatGetMetadataValueFailed(nameof(OutputPath), "OutDir"));
|
throw new CommandException(
|
||||||
|
Resources.FormatGetMetadataValueFailed(nameof(OutputPath), nameof(OutputPath)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Path.IsPathRooted(project.Directory))
|
if (string.IsNullOrEmpty(project.ProjectDirectory))
|
||||||
{
|
{
|
||||||
project.Directory = Path.GetFullPath(Path.Combine(IODirectory.GetCurrentDirectory(), project.Directory));
|
throw new CommandException(
|
||||||
|
Resources.FormatGetMetadataValueFailed(nameof(ProjectDirectory), "MSBuildProjectDirectory"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Path.IsPathRooted(project.AssemblyPath))
|
if (string.IsNullOrEmpty(project.TargetPath))
|
||||||
{
|
{
|
||||||
project.AssemblyPath = Path.GetFullPath(Path.Combine(project.Directory, project.AssemblyPath));
|
throw new CommandException(
|
||||||
|
Resources.FormatGetMetadataValueFailed(nameof(TargetPath), nameof(TargetPath)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Path.IsPathRooted(project.ExtensionsPath))
|
if (!Path.IsPathRooted(project.ProjectDirectory))
|
||||||
{
|
{
|
||||||
project.ExtensionsPath = Path.GetFullPath(Path.Combine(project.Directory, project.ExtensionsPath));
|
project.OutputPath = Path.GetFullPath(
|
||||||
|
Path.Combine(IODirectory.GetCurrentDirectory(), project.ProjectDirectory));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Path.IsPathRooted(project.OutputPath))
|
if (!Path.IsPathRooted(project.OutputPath))
|
||||||
{
|
{
|
||||||
project.OutputPath = Path.GetFullPath(Path.Combine(project.Directory, project.OutputPath));
|
project.OutputPath = Path.GetFullPath(Path.Combine(project.ProjectDirectory, project.OutputPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Some document generation tools support non-ASP.NET Core projects.
|
if (!Path.IsPathRooted(project.ProjectExtensionsPath))
|
||||||
// Thus any of the remaining properties may be empty.
|
|
||||||
if (!(string.IsNullOrEmpty(project.AssetsPath) || Path.IsPathRooted(project.AssetsPath)))
|
|
||||||
{
|
{
|
||||||
project.AssetsPath = Path.GetFullPath(Path.Combine(project.Directory, project.AssetsPath));
|
project.ProjectExtensionsPath = Path.GetFullPath(
|
||||||
|
Path.Combine(project.ProjectDirectory, project.ProjectExtensionsPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
var configPath = $"{project.AssemblyPath}.config";
|
if (!Path.IsPathRooted(project.TargetPath))
|
||||||
|
{
|
||||||
|
project.TargetPath = Path.GetFullPath(Path.Combine(project.OutputPath, project.TargetPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Some document generation tools support non-ASP.NET Core projects. Any of the remaining properties may
|
||||||
|
// thus be null empty.
|
||||||
|
var configPath = $"{project.TargetPath}.config";
|
||||||
if (File.Exists(configPath))
|
if (File.Exists(configPath))
|
||||||
{
|
{
|
||||||
project.ConfigPath = configPath;
|
project.ConfigPath = configPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(string.IsNullOrEmpty(project.DepsPath) || Path.IsPathRooted(project.DepsPath)))
|
if (!(string.IsNullOrEmpty(project.ProjectAssetsFile) || Path.IsPathRooted(project.ProjectAssetsFile)))
|
||||||
{
|
{
|
||||||
project.DepsPath = Path.GetFullPath(Path.Combine(project.Directory, project.DepsPath));
|
project.ProjectAssetsFile = Path.GetFullPath(
|
||||||
|
Path.Combine(project.ProjectDirectory, project.ProjectAssetsFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(string.IsNullOrEmpty(project.RuntimeConfigPath) || Path.IsPathRooted(project.RuntimeConfigPath)))
|
if (!(string.IsNullOrEmpty(project.ProjectDepsFilePath) || Path.IsPathRooted(project.ProjectDepsFilePath)))
|
||||||
{
|
{
|
||||||
project.RuntimeConfigPath = Path.GetFullPath(Path.Combine(project.Directory, project.RuntimeConfigPath));
|
project.ProjectDepsFilePath = Path.GetFullPath(
|
||||||
|
Path.Combine(project.ProjectDirectory, project.ProjectDepsFilePath));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(string.IsNullOrEmpty(project.ProjectRuntimeConfigFilePath) ||
|
||||||
|
Path.IsPathRooted(project.ProjectRuntimeConfigFilePath)))
|
||||||
|
{
|
||||||
|
project.ProjectRuntimeConfigFilePath = Path.GetFullPath(
|
||||||
|
Path.Combine(project.OutputPath, project.ProjectRuntimeConfigFilePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
return project;
|
return project;
|
||||||
|
|
|
||||||
|
|
@ -3,27 +3,29 @@
|
||||||
|
|
||||||
using Microsoft.DotNet.Cli.CommandLine;
|
using Microsoft.DotNet.Cli.CommandLine;
|
||||||
|
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
internal class ProjectOptions
|
internal class ProjectOptions
|
||||||
{
|
{
|
||||||
|
public CommandOption Configuration { get; private set; }
|
||||||
|
|
||||||
public CommandOption Project { get; private set; }
|
public CommandOption Project { get; private set; }
|
||||||
|
|
||||||
public CommandOption Framework { get; private set; }
|
public CommandOption ProjectExtensionsPath { get; private set; }
|
||||||
|
|
||||||
public CommandOption Configuration { get; private set; }
|
|
||||||
|
|
||||||
public CommandOption Runtime { get; private set; }
|
public CommandOption Runtime { get; private set; }
|
||||||
|
|
||||||
public CommandOption MSBuildProjectExtensionsPath { get; private set; }
|
public CommandOption TargetFramework { get; private set; }
|
||||||
|
|
||||||
public void Configure(CommandLineApplication command)
|
public void Configure(CommandLineApplication command)
|
||||||
{
|
{
|
||||||
Project = command.Option("-p|--project <PROJECT>", Resources.ProjectDescription);
|
|
||||||
Framework = command.Option("--framework <FRAMEWORK>", Resources.FrameworkDescription);
|
|
||||||
Configuration = command.Option("--configuration <CONFIGURATION>", Resources.ConfigurationDescription);
|
Configuration = command.Option("--configuration <CONFIGURATION>", Resources.ConfigurationDescription);
|
||||||
|
Project = command.Option("-p|--project <PROJECT>", Resources.ProjectDescription);
|
||||||
|
ProjectExtensionsPath = command.Option(
|
||||||
|
"--projectExtensionsPath <PATH>",
|
||||||
|
Resources.ProjectExtensionsPathDescription);
|
||||||
Runtime = command.Option("--runtime <RUNTIME_IDENTIFIER>", Resources.RuntimeDescription);
|
Runtime = command.Option("--runtime <RUNTIME_IDENTIFIER>", Resources.RuntimeDescription);
|
||||||
MSBuildProjectExtensionsPath = command.Option("--msbuildprojectextensionspath <PATH>", Resources.ProjectExtensionsDescription);
|
TargetFramework = command.Option("--framework <FRAMEWORK>", Resources.TargetFrameworkDescription);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Microsoft.Extensions.ApiDescription.Client
|
namespace Microsoft.Extensions.ApiDescription.Tool
|
||||||
{
|
{
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
@ -8,7 +8,7 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
internal static class Resources
|
internal static class Resources
|
||||||
{
|
{
|
||||||
private static readonly ResourceManager _resourceManager
|
private static readonly ResourceManager _resourceManager
|
||||||
= new ResourceManager("Microsoft.Extensions.ApiDescription.Client.Resources", typeof(Resources).GetTypeInfo().Assembly);
|
= new ResourceManager("Microsoft.Extensions.ApiDescription.Tool.Resources", typeof(Resources).GetTypeInfo().Assembly);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The configuration to use.
|
/// The configuration to use.
|
||||||
|
|
@ -41,19 +41,19 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The target framework.
|
/// The target framework.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string FrameworkDescription
|
internal static string TargetFrameworkDescription
|
||||||
{
|
{
|
||||||
get => GetString("FrameworkDescription");
|
get => GetString("TargetFrameworkDescription");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The target framework.
|
/// The target framework.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string FormatFrameworkDescription()
|
internal static string FormatTargetFrameworkDescription()
|
||||||
=> GetString("FrameworkDescription");
|
=> GetString("TargetFrameworkDescription");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unable to retrieve project metadata. If you are using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, use the --msbuildprojectextensionspath option.
|
/// Unable to retrieve project metadata. If you are using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, use the --projectExtensionsPath option.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string GetMetadataFailed
|
internal static string GetMetadataFailed
|
||||||
{
|
{
|
||||||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unable to retrieve project metadata. If you are using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, use the --msbuildprojectextensionspath option.
|
/// Unable to retrieve project metadata. If you are using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, use the --projectExtensionsPath option.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string FormatGetMetadataFailed()
|
internal static string FormatGetMetadataFailed()
|
||||||
=> GetString("GetMetadataFailed");
|
=> GetString("GetMetadataFailed");
|
||||||
|
|
@ -195,16 +195,16 @@ namespace Microsoft.Extensions.ApiDescription.Client
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The MSBuild project extensions path. Defaults to "obj".
|
/// The MSBuild project extensions path. Defaults to "obj".
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string ProjectExtensionsDescription
|
internal static string ProjectExtensionsPathDescription
|
||||||
{
|
{
|
||||||
get => GetString("ProjectExtensionsDescription");
|
get => GetString("ProjectExtensionsPathDescription");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The MSBuild project extensions path. Defaults to "obj".
|
/// The MSBuild project extensions path. Defaults to "obj".
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string FormatProjectExtensionsDescription()
|
internal static string FormatProjectExtensionsPathDescription()
|
||||||
=> GetString("ProjectExtensionsDescription");
|
=> GetString("ProjectExtensionsPathDescription");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The runtime identifier to use.
|
/// The runtime identifier to use.
|
||||||
|
|
|
||||||
|
|
@ -123,11 +123,11 @@
|
||||||
<data name="CommandFullName" xml:space="preserve">
|
<data name="CommandFullName" xml:space="preserve">
|
||||||
<value>dotnet-getdocument</value>
|
<value>dotnet-getdocument</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FrameworkDescription" xml:space="preserve">
|
<data name="TargetFrameworkDescription" xml:space="preserve">
|
||||||
<value>The target framework.</value>
|
<value>The target framework.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GetMetadataFailed" xml:space="preserve">
|
<data name="GetMetadataFailed" xml:space="preserve">
|
||||||
<value>Unable to retrieve project metadata. If you are using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, use the --msbuildprojectextensionspath option.</value>
|
<value>Unable to retrieve project metadata. If you are using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, use the --projectExtensionsPath option.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MultipleProjects" xml:space="preserve">
|
<data name="MultipleProjects" xml:space="preserve">
|
||||||
<value>More than one project was found in the current working directory. Use the --project option.</value>
|
<value>More than one project was found in the current working directory. Use the --project option.</value>
|
||||||
|
|
@ -156,7 +156,7 @@
|
||||||
<data name="ProjectDescription" xml:space="preserve">
|
<data name="ProjectDescription" xml:space="preserve">
|
||||||
<value>The project to use.</value>
|
<value>The project to use.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProjectExtensionsDescription" xml:space="preserve">
|
<data name="ProjectExtensionsPathDescription" xml:space="preserve">
|
||||||
<value>The MSBuild project extensions path. Defaults to "obj".</value>
|
<value>The MSBuild project extensions path. Defaults to "obj".</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RuntimeDescription" xml:space="preserve">
|
<data name="RuntimeDescription" xml:space="preserve">
|
||||||
|
|
@ -181,6 +181,6 @@
|
||||||
<value>The file to write the result to.</value>
|
<value>The file to write the result to.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GetMetadataValueFailed" xml:space="preserve">
|
<data name="GetMetadataValueFailed" xml:space="preserve">
|
||||||
<value>Unable to retrieve '{0}' project metadata. Ensure '{1}' is set.</value>
|
<value>Unable to retrieve '{0}' project metadata. Ensure '$({1})' is set.</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
||||||
|
|
@ -11,21 +11,21 @@
|
||||||
<ServiceProjectReferenceMetadata Include="DefaultService: $(DefaultServiceProjectService)" />
|
<ServiceProjectReferenceMetadata Include="DefaultService: $(DefaultServiceProjectService)" />
|
||||||
|
|
||||||
<ServiceProjectReferenceMetadata Include="AssemblyName: $(AssemblyName)" />
|
<ServiceProjectReferenceMetadata Include="AssemblyName: $(AssemblyName)" />
|
||||||
<ServiceProjectReferenceMetadata Include="AssemblyPath: $(TargetPath)" />
|
|
||||||
<ServiceProjectReferenceMetadata Include="AssetsPath: $(ProjectAssetsFile)" />
|
|
||||||
<ServiceProjectReferenceMetadata Include="Configuration: $(Configuration)" />
|
<ServiceProjectReferenceMetadata Include="Configuration: $(Configuration)" />
|
||||||
<ServiceProjectReferenceMetadata Include="DepsPath: $(ProjectDepsFilePath)" />
|
<ServiceProjectReferenceMetadata Include="OutputPath: $(OutputPath)" />
|
||||||
<ServiceProjectReferenceMetadata Include="Directory: $(ProjectDir)" />
|
|
||||||
<ServiceProjectReferenceMetadata Include="ExtensionsPath: $(MSBuildProjectExtensionsPath)" />
|
|
||||||
<ServiceProjectReferenceMetadata Include="Name: $(MSBuildProjectName)" />
|
|
||||||
<ServiceProjectReferenceMetadata Include="OutputPath: $(OutDir)" />
|
|
||||||
<ServiceProjectReferenceMetadata Include="Platform: $(Platform)" />
|
<ServiceProjectReferenceMetadata Include="Platform: $(Platform)" />
|
||||||
<ServiceProjectReferenceMetadata Include="PlatformTarget: $(PlatformTarget)" />
|
<ServiceProjectReferenceMetadata Include="PlatformTarget: $(PlatformTarget)" />
|
||||||
<ServiceProjectReferenceMetadata Include="RuntimeConfigPath: $(ProjectRuntimeConfigFilePath)" />
|
<ServiceProjectReferenceMetadata Include="ProjectAssetsFile: $(ProjectAssetsFile)" />
|
||||||
|
<ServiceProjectReferenceMetadata Include="ProjectDepsFilePath: $(ProjectDepsFilePath)" />
|
||||||
|
<ServiceProjectReferenceMetadata Include="ProjectDirectory: $(MSBuildProjectDirectory)" />
|
||||||
|
<ServiceProjectReferenceMetadata Include="ProjectExtensionsPath: $(MSBuildProjectExtensionsPath)" />
|
||||||
|
<ServiceProjectReferenceMetadata Include="ProjectName: $(MSBuildProjectName)" />
|
||||||
|
<ServiceProjectReferenceMetadata Include="ProjectRuntimeConfigFilePath: $(ProjectRuntimeConfigFilePath)" />
|
||||||
<ServiceProjectReferenceMetadata Include="RuntimeFrameworkVersion: $(RuntimeFrameworkVersion)" />
|
<ServiceProjectReferenceMetadata Include="RuntimeFrameworkVersion: $(RuntimeFrameworkVersion)" />
|
||||||
<ServiceProjectReferenceMetadata Include="RuntimeIdentifier: $(RuntimeIdentifier)" />
|
<ServiceProjectReferenceMetadata Include="RuntimeIdentifier: $(RuntimeIdentifier)" />
|
||||||
<ServiceProjectReferenceMetadata Include="TargetFramework: $(TargetFramework)" />
|
<ServiceProjectReferenceMetadata Include="TargetFramework: $(TargetFramework)" />
|
||||||
<ServiceProjectReferenceMetadata Include="TargetFrameworkMoniker: $(TargetFrameworkMoniker)" />
|
<ServiceProjectReferenceMetadata Include="TargetFrameworkMoniker: $(TargetFrameworkMoniker)" />
|
||||||
|
<ServiceProjectReferenceMetadata Include="TargetPath: $(TargetPath)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<EnableApiCheck>false</EnableApiCheck>
|
<EnableApiCheck>false</EnableApiCheck>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<RootNamespace>Microsoft.Extensions.ApiDescription.Client</RootNamespace>
|
<RootNamespace>Microsoft.Extensions.ApiDescription.Tool</RootNamespace>
|
||||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue