diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props index 60692756fa3a..e0f67e29745d 100644 --- a/eng/ProjectReferences.props +++ b/eng/ProjectReferences.props @@ -8,7 +8,7 @@ - + diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/CSharpIdentifier.cs b/src/Mvc/Extensions.ApiDescription.Client/src/CSharpIdentifier.cs similarity index 100% rename from src/Mvc/Extensions.ApiDescription.Design/src/CSharpIdentifier.cs rename to src/Mvc/Extensions.ApiDescription.Client/src/CSharpIdentifier.cs diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/GetCurrentItems.cs b/src/Mvc/Extensions.ApiDescription.Client/src/GetCurrentItems.cs similarity index 100% rename from src/Mvc/Extensions.ApiDescription.Design/src/GetCurrentItems.cs rename to src/Mvc/Extensions.ApiDescription.Client/src/GetCurrentItems.cs diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/GetFileReferenceMetadata.cs b/src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs similarity index 71% rename from src/Mvc/Extensions.ApiDescription.Design/src/GetFileReferenceMetadata.cs rename to src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs index 7266f816edf6..73f8d01495a3 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/GetFileReferenceMetadata.cs +++ b/src/Mvc/Extensions.ApiDescription.Client/src/GetFileReferenceMetadata.cs @@ -10,8 +10,8 @@ namespace Microsoft.Extensions.ApiDescription.Tasks { /// - /// Adds or corrects ClassName, Namespace and OutputPath metadata in ServiceFileReference items. Also stores final - /// metadata as SerializedMetadata. + /// Adds or corrects ClassName, FirstForGenerator, Namespace, and OutputPath metadata in OpenApiReference items. + /// Also stores final metadata as SerializedMetadata. /// public class GetFileReferenceMetadata : Task { @@ -35,13 +35,13 @@ public class GetFileReferenceMetadata : Task public string OutputDirectory { get; set; } /// - /// The ServiceFileReference items to update. + /// The OpenApiReference items to update. /// [Required] public ITaskItem[] Inputs { get; set; } /// - /// The updated ServiceFileReference items. Will include ClassName, Namespace and OutputPath metadata. + /// The updated OpenApiReference items. Will include ClassName, Namespace and OutputPath metadata. /// [Output] public ITaskItem[] Outputs{ get; set; } @@ -50,36 +50,45 @@ public class GetFileReferenceMetadata : Task public override bool Execute() { var outputs = new List(Inputs.Length); + var codeGenerators = new HashSet(); var destinations = new HashSet(); foreach (var item in Inputs) { + var codeGenerator = item.GetMetadata("CodeGenerator"); + if (string.IsNullOrEmpty(codeGenerator)) + { + // This case occurs when user overrides the required metadata with an empty string. + var type = string.IsNullOrEmpty(item.GetMetadata("SourceProject")) ? + "OpenApiReference" : + "OpenApiProjectReference"; + + Log.LogError( + Resources.FormatInvalidEmptyMetadataValue("CodeGenerator", "OpenApiReference", item.ItemSpec)); + continue; + } + var newItem = new TaskItem(item); outputs.Add(newItem); - var codeGenerator = item.GetMetadata("CodeGenerator"); - if (string.IsNullOrEmpty("CodeGenerator")) + if (codeGenerators.Add(codeGenerator)) + { + newItem.SetMetadata("FirstForGenerator", "true"); + } + else { - // This case occurs when user forgets to specify the required metadata. We have no default here. - string type; - if (!string.IsNullOrEmpty(item.GetMetadata("SourceProject"))) - { - type = "ServiceProjectReference"; - } - else - { - type = "ServiceFileReference"; - } - - Log.LogError(Resources.FormatInvalidEmptyMetadataValue("CodeGenerator", type, item.ItemSpec)); + newItem.SetMetadata("FirstForGenerator", "false"); } var outputPath = item.GetMetadata("OutputPath"); if (string.IsNullOrEmpty(outputPath)) { - // No need to further sanitize this path. + // No need to further sanitize this path because the file must exist. var filename = item.GetMetadata("Filename"); - var isTypeScript = codeGenerator.EndsWith(TypeScriptLanguageName, StringComparison.OrdinalIgnoreCase); + var isTypeScript = codeGenerator.EndsWith( + TypeScriptLanguageName, + StringComparison.OrdinalIgnoreCase); + outputPath = $"{filename}Client{(isTypeScript ? ".ts" : Extension)}"; } @@ -94,6 +103,7 @@ public override bool Execute() // This case may occur when user is experimenting e.g. with multiple code generators or options. // May also occur when user accidentally duplicates OutputPath metadata. Log.LogError(Resources.FormatDuplicateFileOutputPaths(outputPath)); + continue; } MetadataSerializer.SetMetadata(newItem, "OutputPath", outputPath); diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/MetadataSerializer.cs b/src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs similarity index 99% rename from src/Mvc/Extensions.ApiDescription.Design/src/MetadataSerializer.cs rename to src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs index 331bac617a4b..32f7fbf8321e 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/MetadataSerializer.cs +++ b/src/Mvc/Extensions.ApiDescription.Client/src/MetadataSerializer.cs @@ -115,7 +115,6 @@ private static void EscapeValue(string value, StringBuilder builder) { if (string.IsNullOrEmpty(value)) { - builder.Append(value); return; } diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/Microsoft.Extensions.ApiDescription.Design.csproj b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj similarity index 86% rename from src/Mvc/Extensions.ApiDescription.Design/src/Microsoft.Extensions.ApiDescription.Design.csproj rename to src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj index e7b3a311793b..56ef2bdc2470 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/Microsoft.Extensions.ApiDescription.Design.csproj +++ b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj @@ -27,15 +27,9 @@ - - - id=$(PackageId); diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/Microsoft.Extensions.ApiDescription.Design.nuspec b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec similarity index 69% rename from src/Mvc/Extensions.ApiDescription.Design/src/Microsoft.Extensions.ApiDescription.Design.nuspec rename to src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec index 2e660f3d8bd6..7521110b6f85 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/Microsoft.Extensions.ApiDescription.Design.nuspec +++ b/src/Mvc/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec @@ -21,9 +21,5 @@ - - - - diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/Properties/Resources.Designer.cs b/src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs similarity index 66% rename from src/Mvc/Extensions.ApiDescription.Design/src/Properties/Resources.Designer.cs rename to src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs index 68b8789cd924..3e16c26c41e4 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/Properties/Resources.Designer.cs +++ b/src/Mvc/Extensions.ApiDescription.Client/src/Properties/Resources.Designer.cs @@ -11,7 +11,7 @@ private static readonly ResourceManager _resourceManager = new ResourceManager("Microsoft.Extensions.ApiDescription.Tasks.Resources", typeof(Resources).GetTypeInfo().Assembly); /// - /// Multiple items have OutputPath='{0}'. All ServiceFileReference and ServiceProjectReference items must have unique OutputPath metadata. + /// Multiple items have OutputPath='{0}'. All OpenApiReference items must have unique OutputPath metadata. /// internal static string DuplicateFileOutputPaths { @@ -19,25 +19,11 @@ internal static string DuplicateFileOutputPaths } /// - /// Multiple items have OutputPath='{0}'. All ServiceFileReference and ServiceProjectReference items must have unique OutputPath metadata. + /// Multiple items have OutputPath='{0}'. All OpenApiReference items must have unique OutputPath metadata. /// internal static string FormatDuplicateFileOutputPaths(object p0) => string.Format(CultureInfo.CurrentCulture, GetString("DuplicateFileOutputPaths"), p0); - /// - /// Mutliple ServiceProjectReference items have DocumentPath='{0}'. ServiceProjectReference items must have unique DocumentPath metadata. - /// - internal static string DuplicateProjectDocumentPaths - { - get => GetString("DuplicateProjectDocumentPaths"); - } - - /// - /// Mutliple ServiceProjectReference items have DocumentPath='{0}'. ServiceProjectReference items must have unique DocumentPath metadata. - /// - internal static string FormatDuplicateProjectDocumentPaths(object p0) - => string.Format(CultureInfo.CurrentCulture, GetString("DuplicateProjectDocumentPaths"), p0); - /// /// Invalid {0} metadata value for {1} item '{2}'. {0} metadata must not be set to the empty string. /// diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/Resources.resx b/src/Mvc/Extensions.ApiDescription.Client/src/Resources.resx similarity index 91% rename from src/Mvc/Extensions.ApiDescription.Design/src/Resources.resx rename to src/Mvc/Extensions.ApiDescription.Client/src/Resources.resx index 261308c78987..1da8a3468400 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/Resources.resx +++ b/src/Mvc/Extensions.ApiDescription.Client/src/Resources.resx @@ -118,11 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Multiple items have OutputPath='{0}'. All ServiceFileReference and ServiceProjectReference items must have unique OutputPath metadata. - ServiceProjectReference items become ServiceFileReference items and all ServiceFileReference items must have unique OutputPath metadata. - - - Mutliple ServiceProjectReference items have DocumentPath='{0}'. ServiceProjectReference items must have unique DocumentPath metadata. + Multiple items have OutputPath='{0}'. All OpenApiReference items must have unique OutputPath metadata. Invalid {0} metadata value for {1} item '{2}'. {0} metadata must not be set to the empty string. 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 new file mode 100644 index 000000000000..5f5640bfd392 --- /dev/null +++ b/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.props @@ -0,0 +1,67 @@ + + + + <_ApiDescriptionTasksAssemblyTarget + Condition="'$(MSBuildRuntimeType)' == 'Core'">netstandard2.0 + <_ApiDescriptionTasksAssemblyTarget + Condition="'$(MSBuildRuntimeType)' != 'Core'">net461 + <_ApiDescriptionTasksAssemblyPath>$(MSBuildThisFileDirectory)/../tasks/$(_ApiDescriptionTasksAssemblyTarget)/Microsoft.Extensions.ApiDescription.Tasks.dll + <_ApiDescriptionTasksAssemblyTarget /> + + + + + + + + + + true + + + $(BaseIntermediateOutputPath) + $([MSBuild]::EnsureTrailingSlash('$(OpenApiDefaultOutputDirectory)')) + + + + + + + + + + + + NSwagCSharp + + + + $(OpenApiDefaultGeneratorOptions) + + + + + 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 new file mode 100644 index 000000000000..bd7006fc3653 --- /dev/null +++ b/src/Mvc/Extensions.ApiDescription.Client/src/build/Microsoft.Extensions.ApiDescription.Client.targets @@ -0,0 +1,149 @@ + + + + + + _GetMetadataForOpenApiReferences; + _GenerateOpenApiReferenceCode; + _CreateCompileItemsForOpenApiReferences + + + _GenerateErrorsForOldItems; + _CreateOpenApiReferenceItemsForOpenApiProjectReferences; + GenerateOpenApiReferenceCode + + + + + + + + + NU1702 + false + + + true + + + + + + <_Temporary Remove="@(_Temporary)" /> + + + + + + + + + <_Temporary Remove="@(_Temporary)" /> + + + + + + + + <_Temporary Remove="@(_Temporary)" /> + + + + + + + + + + <_Temporary Remove="@(_Temporary)" /> + + + + + + + + + + + + + + + + + + <_Files Remove="@(_Files)" /> + <_Files Include="@(OpenApiReference -> '%(OutputPath)')" + Condition="$([System.IO.File]::Exists('%(OpenApiReference.OutputPath)'))"> + $([System.IO.Path]::GetExtension('%(OpenApiReference.OutputPath)')) + + <_Directories Remove="@(_Directories)" /> + <_Directories Include="@(OpenApiReference -> '%(OutputPath)')" + Condition="Exists('%(OpenApiReference.OutputPath)') AND ! $([System.IO.File]::Exists('%(OpenApiReference.OutputPath)'))" /> + + + + %(_Files.FullPath) + + + + %(OpenApiReference.FullPath) + + + + + %(_Directories.FullPath) + + + + %(_Directories.FullPath) + + + <_Files Remove="@(_Files)" /> + <_Directories Remove="@(_Directories)" /> + + + + + + + + + + + + + + + diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Design.targets b/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets similarity index 67% rename from src/Mvc/Extensions.ApiDescription.Design/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Design.targets rename to src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets index af5d08a6bbe4..d085051f068e 100644 --- a/src/Mvc/Extensions.ApiDescription.Design/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Design.targets +++ b/src/Mvc/Extensions.ApiDescription.Client/src/buildMultiTargeting/Microsoft.Extensions.ApiDescription.Client.targets @@ -1,8 +1,8 @@  - + diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/GetProjectReferenceMetadata.cs b/src/Mvc/Extensions.ApiDescription.Design/src/GetProjectReferenceMetadata.cs deleted file mode 100644 index ff9ffcd780a3..000000000000 --- a/src/Mvc/Extensions.ApiDescription.Design/src/GetProjectReferenceMetadata.cs +++ /dev/null @@ -1,147 +0,0 @@ -// 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. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -namespace Microsoft.Extensions.ApiDescription.Tasks -{ - /// - /// Adds or corrects DocumentPath and project-related metadata in ServiceProjectReference items. Also stores final - /// metadata as SerializedMetadata. - /// - public class GetProjectReferenceMetadata : Task - { - private static readonly char[] InvalidFilenameCharacters = Path.GetInvalidFileNameChars(); - private static readonly string[] InvalidFilenameStrings = new[] { ".." }; - - /// - /// Default directory for DocumentPath values. - /// - public string DocumentDirectory { get; set; } - - /// - /// The ServiceFileReference items to update. - /// - [Required] - public ITaskItem[] Inputs { get; set; } - - /// - /// The updated ServiceFileReference items. Will include Namespace and OutputPath metadata. OutputPath metadata - /// will contain full paths. - /// - [Output] - public ITaskItem[] Outputs{ get; set; } - - /// - public override bool Execute() - { - var outputs = new List(Inputs.Length); - var destinations = new HashSet(); - - foreach (var item in Inputs) - { - var newItem = new TaskItem(item); - outputs.Add(newItem); - - var documentGenerator = item.GetMetadata("DocumentGenerator"); - if (string.IsNullOrEmpty(documentGenerator)) - { - // This case occurs when user overrides the default metadata. - Log.LogError(Resources.FormatInvalidEmptyMetadataValue( - "DocumentGenerator", - "ServiceProjectReference", - item.ItemSpec)); - } - - var documentName = item.GetMetadata("DocumentName"); - if (string.IsNullOrEmpty(documentName)) - { - documentName = "v1"; - MetadataSerializer.SetMetadata(newItem, "DocumentName", documentName); - } - - var documentPath = item.GetMetadata("DocumentPath"); - if (string.IsNullOrEmpty(documentPath)) - { - // No need to sanitize the filename since the project file exists. - var projectFilename = item.GetMetadata("Filename"); - - // Default document filename matches project filename unless given a non-default document name. - if (string.IsNullOrEmpty(documentName)) - { - // This is an odd (but allowed) case that would break the sanitize one-liner below. Also, - // ensure chosen name does not match the "v1" case. - documentPath = projectFilename + "_.json"; - } - else if (string.Equals("v1", documentName, StringComparison.Ordinal)) - { - documentPath = projectFilename + ".json"; - } - else - { - // Sanitize the document name because it may contain almost any character, including illegal - // filename characters such as '/' and '?'. (Do not treat slashes as folder separators.) - var sanitizedDocumentName = string.Join("_", documentName.Split(InvalidFilenameCharacters)); - while (sanitizedDocumentName.Contains(InvalidFilenameStrings[0])) - { - sanitizedDocumentName = string.Join( - ".", - sanitizedDocumentName.Split(InvalidFilenameStrings, StringSplitOptions.None)); - } - - documentPath = $"{projectFilename}_{sanitizedDocumentName}"; - - // Possible the document path already ends with .json. Don't duplicate that or a final period. - if (!documentPath.EndsWith(".json", StringComparison.OrdinalIgnoreCase)) - { - if (documentPath.EndsWith(".", StringComparison.Ordinal)) - { - documentPath += "json"; - } - else - { - documentPath += ".json"; - } - } - } - } - - documentPath = GetFullPath(documentPath); - if (!destinations.Add(documentPath)) - { - // This case may occur when user is experimenting e.g. with multiple generators or options. - // May also occur when user accidentally duplicates DocumentPath metadata. - Log.LogError(Resources.FormatDuplicateProjectDocumentPaths(documentPath)); - } - - MetadataSerializer.SetMetadata(newItem, "DocumentPath", documentPath); - - // Add metadata which may be used as a property and passed to an inner build. - newItem.SetMetadata("SerializedMetadata", MetadataSerializer.SerializeMetadata(newItem)); - } - - Outputs = outputs.ToArray(); - - return !Log.HasLoggedErrors; - } - - private string GetFullPath(string path) - { - if (!Path.IsPathRooted(path)) - { - if (!string.IsNullOrEmpty(DocumentDirectory)) - { - path = Path.Combine(DocumentDirectory, path); - } - - path = Path.GetFullPath(path); - } - - return path; - } - } -} diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/build/Microsoft.Extensions.ApiDescription.Design.props b/src/Mvc/Extensions.ApiDescription.Design/src/build/Microsoft.Extensions.ApiDescription.Design.props deleted file mode 100644 index b07edc31d74c..000000000000 --- a/src/Mvc/Extensions.ApiDescription.Design/src/build/Microsoft.Extensions.ApiDescription.Design.props +++ /dev/null @@ -1,124 +0,0 @@ - - - - <_ApiDescriptionTasksAssemblyTarget - Condition="'$(MSBuildRuntimeType)' == 'Core'">netstandard2.0 - <_ApiDescriptionTasksAssemblyTarget - Condition="'$(MSBuildRuntimeType)' != 'Core'">net461 - <_ApiDescriptionTasksAssemblyPath>$(MSBuildThisFileDirectory)/../tasks/$(_ApiDescriptionTasksAssemblyTarget)/Microsoft.Extensions.ApiDescription.Tasks.dll - <_ApiDescriptionTasksAssemblyTarget /> - - - - - - - - true - $([MSBuild]::EnsureTrailingSlash('$(ServiceProjectReferenceDirectory)')) - - true - $([MSBuild]::EnsureTrailingSlash('$(ServiceFileReferenceDirectory)')) - - - - - - - - - Default - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Mvc/Extensions.ApiDescription.Design/src/build/Microsoft.Extensions.ApiDescription.Design.targets b/src/Mvc/Extensions.ApiDescription.Design/src/build/Microsoft.Extensions.ApiDescription.Design.targets deleted file mode 100644 index 86d88c74f6d3..000000000000 --- a/src/Mvc/Extensions.ApiDescription.Design/src/build/Microsoft.Extensions.ApiDescription.Design.targets +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - _GetTargetFrameworkForServiceProjectReferences; - _GetTargetPathForServiceProjectReferences; - _GetMetadataForServiceProjectReferences; - _BuildServiceProjectReferences; - _GenerateServiceProjectReferenceDocuments; - _CreateFileItemsForServiceProjectReferences - - - GenerateServiceProjectReferenceDocuments; - _GetMetadataForServiceFileReferences; - _GenerateServiceFileReferenceCodes; - _CreateCompileItemsForServiceFileReferences - - - - - - - - - <_FullPath>%(ServiceProjectReference.FullPath) - - - <_Temporary Remove="@(_Temporary)" /> - - - - - - - - - <_TargetFrameworks>%(_Temporary.TargetFrameworks) - <_TargetFramework>$(_TargetFrameworks.Split(';')[0]) - - - - $(_TargetFramework) - - <_Temporary Remove="@(_Temporary)" /> - - - - <_FullPath /> - <_TargetFramework /> - <_TargetFrameworks /> - - - - - - - <_FullPath>%(ServiceProjectReference.FullPath) - <_TargetFramework>%(ServiceProjectReference.TargetFramework) - - - <_Temporary Remove="@(_Temporary)" /> - - - - - - - - <_TargetPath>%(_Temporary.FullPath) - - - - $(_TargetPath) - - <_Temporary Remove="@(_Temporary)" /> - - - - <_FullPath /> - <_TargetPath /> - <_TargetFramework /> - - - - - - - <_Temporary Remove="@(_Temporary)" /> - - - - - - - - - - - - <_Temporary Remove="@(_Temporary)" /> - - - - - - - - - - - - - - - - - - - - - - - - - - %(ServiceProjectReference.FullPath) - - - - - - - - - - - - - dotnet $(MSBuildThisFileDirectory)/../tools/dotnet-getdocument.dll --project "%(FullPath)" - $(Configuration) - $(GenerateDefaultDocumentDefaultOptions) - - - %(Command) --documentName "%(DocumentName)" --framework %(TargetFramework) --output "%(DocumentPath)" - - - %(Command) --method %(Method) - - - %(Command) --service %(Service) - - - %(Command) --projectExtensionsPath "%(ProjectExtensionsPath)" - - - %(Command) --configuration %(Configuration) %(GenerateDefaultDocumentOptions) - - - - - - - - - - - - - <_Temporary Remove="@(_Temporary)" /> - - - - - - - - - - <_Temporary Remove="@(_Temporary)" /> - - - - - - - - - - - - - - - - - - - <_Files Remove="@(_Files)" /> - <_Files Include="@(ServiceFileReference -> '%(OutputPath)')" - Condition="$([System.IO.File]::Exists('%(ServiceFileReference.OutputPath)'))"> - $([System.IO.Path]::GetExtension('%(ServiceFileReference.OutputPath)')) - - <_Directories Remove="@(_Directories)" /> - <_Directories Include="@(ServiceFileReference -> '%(OutputPath)')" - Condition="Exists('%(ServiceFileReference.OutputPath)') AND ! $([System.IO.File]::Exists('%(ServiceFileReference.OutputPath)'))" /> - - - - - %(_Files.FullPath) - - - - - %(ServiceFileReference.FullPath) - - - - - - %(_Directories.FullPath) - - - - - %(_Directories.FullPath) - - - <_Files Remove="@(_Files)" /> - <_Directories Remove="@(_Directories)" /> - - - - - diff --git a/src/Mvc/Mvc.sln b/src/Mvc/Mvc.sln index 0c31683b2e60..a7f901a8612e 100644 --- a/src/Mvc/Mvc.sln +++ b/src/Mvc/Mvc.sln @@ -85,7 +85,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-getdocument", "dotne EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GetDocumentInsider", "GetDocumentInsider\src\GetDocumentInsider.csproj", "{2F683CF8-B055-46AE-BF83-9D1307F8D45F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.ApiDescription.Design", "Extensions.ApiDescription.Design\src\Microsoft.Extensions.ApiDescription.Design.csproj", "{34E3C302-B767-40C8-B538-3EE2BD4000C4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.ApiDescription.Client", "Extensions.ApiDescription.Client\src\Microsoft.Extensions.ApiDescription.Client.csproj", "{34E3C302-B767-40C8-B538-3EE2BD4000C4}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_dependencies", "_dependencies", "{5FE3048A-E96B-44F8-A7C4-FC590D7E04B4}" EndProject @@ -277,7 +277,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mvc.Analyzers", "Mvc.Analyz EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mvc.Api.Analyzers", "Mvc.Api.Analyzers", "{49887FD5-2E52-4567-929E-9151DC88E4D4}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions.ApiDescription.Design", "Extensions.ApiDescription.Design", "{62CF82C1-B75D-4041-A7E9-EF39FF7B885F}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions.ApiDescription.Client", "Extensions.ApiDescription.Client", "{62CF82C1-B75D-4041-A7E9-EF39FF7B885F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Core.TestCommon", "shared\Mvc.Core.TestCommon\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj", "{2906BF70-82BE-4427-870A-E87281D01008}" EndProject