aspnetcore/src/Microsoft.Extensions.ApiDes.../build/Microsoft.Extensions.ApiDes...

291 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project>
<!-- Internal settings for Microsoft.Extensions.ApiDescription.Client.targets use. Not intended for customization. -->
<PropertyGroup>
<ServiceProjectReferenceGeneratorDependsOn>
_ServiceProjectReferenceGenerator_GetTargetFramework;
_ServiceProjectReferenceGenerator_GetProjectTargetPath;
_ServiceProjectReferenceGenerator_GetMetadata;
_ServiceProjectReferenceGenerator_Build;
_ServiceProjectReferenceGenerator_Core;
_ServiceProjectReferenceGenerator_SetMetadata
</ServiceProjectReferenceGeneratorDependsOn>
<ServiceUriReferenceGeneratorDependsOn>
_ServiceUriReferenceGenerator_GetMetadata;
_ServiceUriReferenceGenerator_Core
</ServiceUriReferenceGeneratorDependsOn>
<ServiceFileReferenceGeneratorDependsOn>
ServiceProjectReferenceGenerator;
ServiceUriReferenceGenerator;
_ServiceFileReferenceGenerator_GetMetadata;
_ServiceFileReferenceGenerator_Core;
_ServiceFileReferenceGenerator_SetMetadata
</ServiceFileReferenceGeneratorDependsOn>
</PropertyGroup>
<!-- ServiceProjectReference support -->
<!-- Metadata setup phase 1: Ensure items have TargetFramework metadata. Call GetTargetFrameworks in the target project. -->
<!-- Inputs and outputs cause MSBuild to run target unconditionally and to batch it (run once per project). -->
<Target Name="_ServiceProjectReferenceGenerator_GetTargetFramework"
Inputs="%(ServiceProjectReference.FullPath)"
Outputs="&lt;not-a-file !&gt;">
<PropertyGroup>
<_FullPath>%(ServiceProjectReference.FullPath)</_FullPath>
</PropertyGroup>
<ItemGroup>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<MSBuild Projects="$(_FullPath)"
RebaseOutputs="true"
RemoveProperties="TargetFramework;TargetFrameworks;RuntimeIdentifier"
Targets="GetTargetFrameworks"
UseResultsCache="true">
<Output TaskParameter="TargetOutputs" ItemName="_Temporary" />
</MSBuild>
<!-- Please excuse the mess necessary to extract information from _Temporary and use it in ServiceProjectReference. -->
<PropertyGroup>
<_TargetFrameworks>%(_Temporary.TargetFrameworks)</_TargetFrameworks>
<_TargetFramework>$(_TargetFrameworks.Split(';')[0])</_TargetFramework>
</PropertyGroup>
<ItemGroup>
<ServiceProjectReference Update="@(ServiceProjectReference)" Condition="'%(FullPath)' == '$(_FullPath)'">
<ProjectTargetFramework Condition="'%(ProjectTargetFramework)' == ''">$(_TargetFramework)</ProjectTargetFramework>
</ServiceProjectReference>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<PropertyGroup>
<_FullPath />
<_TargetFramework />
<_TargetFrameworks />
</PropertyGroup>
</Target>
<!-- Metadata setup phase 2: Ensure items have ProjectTargetPath metadata. Call GetTargetPath in the target project. -->
<!-- Inputs and outputs cause MSBuild to run target unconditionally and batch it (run once per TargetFramework x project combination). -->
<Target Name="_ServiceProjectReferenceGenerator_GetProjectTargetPath"
Inputs="%(ServiceProjectReference.TargetFramework)%(FullPath)')"
Outputs="&lt;not-a-file !&gt;">
<PropertyGroup>
<_FullPath>%(ServiceProjectReference.FullPath)</_FullPath>
<_TargetFramework>%(ServiceProjectReference.ProjectTargetFramework)</_TargetFramework>
</PropertyGroup>
<ItemGroup>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<Message
Importance="high"
Text="%0A_ServiceProjectReferenceGenerator_GetProjectTargetPath: '$(_FullPath)' '$(_TargetFramework)'" />
<MSBuild Projects="$(_FullPath)"
Properties="TargetFramework=$(_TargetFramework)"
RebaseOutputs="true"
RemoveProperties="TargetFrameworks;RuntimeIdentifier"
Targets="GetTargetPath"
UseResultsCache="true">
<Output TaskParameter="TargetOutputs" ItemName="_Temporary" />
</MSBuild>
<PropertyGroup>
<_ProjectTargetPath>%(_Temporary.FullPath)</_ProjectTargetPath>
</PropertyGroup>
<ItemGroup>
<ServiceProjectReference Update="@(ServiceProjectReference)"
Condition="'%(ServiceProjectReference.FullPath)' == '$(_FullPath)' AND '%(ProjectTargetFramework)' == '$(_TargetFramework)'">
<ProjectTargetPath>$(_ProjectTargetPath)</ProjectTargetPath>
</ServiceProjectReference>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<PropertyGroup>
<_FullPath />
<_ProjectTargetPath />
<_TargetFramework />
</PropertyGroup>
</Target>
<!-- Metadata setup phase 3: Ensure items have DocumentPath metadata. -->
<Target Name="_ServiceProjectReferenceGenerator_GetMetadata" Condition="'@(ServiceProjectReference)' != ''">
<ItemGroup>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<GetProjectReferenceMetadata Inputs="@(ServiceProjectReference)" DocumentDirectory="$(ServiceProjectReferenceDirectory)">
<Output TaskParameter="Outputs" ItemName="_Temporary" />
</GetProjectReferenceMetadata>
<ItemGroup>
<ServiceProjectReference Remove="@(ServiceProjectReference)" />
<ServiceProjectReference Include="@(_Temporary)" />
</ItemGroup>
<ItemGroup>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<Message Importance="high" Text="%0A_ServiceProjectReferenceGenerator_GetMetadata:" />
<Message Importance="high" Text=" @(ServiceProjectReference): %(DocumentPath)" />
</Target>
<Target Name="_ServiceProjectReferenceGenerator_Build"
Condition="'$(BuildProjectReferences)' == 'true'"
Inputs="@(ServiceProjectReference)"
Outputs="%(ProjectTargetPath)">
<MSBuild Projects="@(ServiceProjectReference -> Distinct())"
BuildInParallel="$(BuildInParallel)"
RemoveProperties="TargetFramework;TargetFrameworks;RuntimeIdentifier"
Targets="Restore;Build" />
</Target>
<Target Name="_ServiceProjectReferenceGenerator_GetItems">
<GetCurrentItems Input="$(GeneratorMetadata)">
<Output TaskParameter="Outputs" ItemName="CurrentServiceProjectReference" />
</GetCurrentItems>
</Target>
<Target Name="_ServiceProjectReferenceGenerator_Inner" DependsOnTargets="_ServiceProjectReferenceGenerator_GetItems;$(GeneratorTarget)" />
<Target Name="_ServiceProjectReferenceGenerator_Core" Inputs="@(ServiceProjectReference)" Outputs="%(DocumentPath)">
<Message Importance="high" Text="%0A_ServiceProjectReferenceGenerator_Core:" />
<Message Importance="high" Text=" @(ServiceProjectReference): %(DocumentPath)" />
<MSBuild BuildInParallel="$(BuildInParallel)"
Projects="$(MSBuildProjectFullPath)"
Properties="GeneratorTargetPath=%(ServiceProjectReference.DocumentPath);GeneratorTarget=%(DocumentGenerator)DocumentGenerator;GeneratorMetadata=%(SerializedMetadata);TargetFramework=%(ProjectTargetFramework)"
RemoveProperties="TargetFrameworks;RuntimeIdentifier"
Targets="_ServiceProjectReferenceGenerator_Inner" />
</Target>
<Target Name="_ServiceProjectReferenceGenerator_SetMetadata" Condition="'@(ServiceProjectReference)' != ''">
<!-- _ServiceProjectReferenceGenerator_GetMetadata guarantees %(DocumentPath) values are unique. -->
<ItemGroup>
<ServiceFileReference Remove="@(ServiceProjectReference -> '%(DocumentPath)')" />
<!-- Condition here is temporary. Useful while DefaultDocumentGenerator fails. -->
<ServiceFileReference Include="@(ServiceProjectReference -> '%(DocumentPath)')"
Condition="Exists('%(DocumentPath)')"
SourceProject="%(FullPath)" />
</ItemGroup>
</Target>
<Target Name="ServiceProjectReferenceGenerator" DependsOnTargets="$(ServiceProjectReferenceGeneratorDependsOn)" />
<!-- DefaultDocumentGenerator -->
<Target Name="DefaultDocumentGenerator">
<Message Importance="high" Text="%0ADefaultDocumentGenerator:" />
<Message Importance="high" Text=" @(CurrentServiceProjectReference): %(DocumentPath)" />
<ItemGroup>
<!-- @(CurrentServiceProjectReference) item group will never contain more than one item. -->
<CurrentServiceProjectReference Update="@(CurrentServiceProjectReference)">
<Command>dotnet getdocument --no-build --project %(FullPath) --output %(DocumentPath)</Command>
<DefaultDocumentGeneratorOptions
Condition="'%(DefaultDocumentGeneratorOptions)' == ''">$(DefaultDocumentGeneratorDefaultOptions)</DefaultDocumentGeneratorOptions>
</CurrentServiceProjectReference>
<CurrentServiceProjectReference Update="@(_Temporary)">
<Command>%(Command) --framework %(ProjectTargetFramework)</Command>
<Command Condition="'%(ProjectConfiguration)' == ''">%(Command) --configuration $(Configuration)</Command>
<Command Condition="'%(ProjectConfiguration)' != ''">%(Command) --configuration %(ProjectConfiguration)</Command>
<Command Condition="'%(Method)' != ''">%(Command) --method %(Method)</Command>
<Command Condition="'%(Service)' != ''">%(Command) --service %(Service)</Command>
<Command Condition="'%(Uri)' != ''">%(Command) --uri %(Uri)</Command>
<Command
Condition="'%(DefaultDocumentGeneratorOptions)' != ''">%(Command) %(DefaultDocumentGeneratorOptions)</Command>
</CurrentServiceProjectReference>
</ItemGroup>
<Message Importance="high" Text="%0A%(CurrentServiceProjectReference.Command)" />
<Exec IgnoreExitCode="$([System.IO.File]::Exists('%(DocumentPath)'))" Command="%(CurrentServiceProjectReference.Command)" />
</Target>
<!-- ServiceUriReference support -->
<Target Name="_ServiceUriReferenceGenerator_GetMetadata" Condition="'@(ServiceUriReference)' != ''">
<ItemGroup>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<GetUriReferenceMetadata Inputs="@(ServiceUriReference)" DocumentDirectory="$(ServiceUriReferenceDirectory)">
<Output TaskParameter="Outputs" ItemName="_Temporary" />
</GetUriReferenceMetadata>
<ItemGroup>
<ServiceUriReference Remove="@(ServiceUriReference)" />
<ServiceUriReference Include="@(_Temporary)" />
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
</Target>
<Target Name="_ServiceUriReferenceGenerator_Core" Condition="'@(ServiceUriReference)' != ''">
<Microsoft.Extensions.ApiDescription.Client.DownloadFile Uri="%(ServiceUriReference.Identity)"
DestinationPath="%(DocumentPath)"
Overwrite="$(ServiceUriReferenceCheckIfNewer)" />
<!-- _ServiceUriReferenceGenerator_GetMetadata guarantees %(DocumentPath) values are unique. -->
<ItemGroup>
<ServiceFileReference Remove="@(ServiceUriReference -> '%(DocumentPath)')" />
<ServiceFileReference Include="@(ServiceUriReference -> '%(DocumentPath)')" SourceUri="%(Identity)" />
</ItemGroup>
</Target>
<Target Name="ServiceUriReferenceGenerator" DependsOnTargets="$(ServiceUriReferenceGeneratorDependsOn)" />
<!-- ServiceFileReference support -->
<Target Name="_ServiceFileReferenceGenerator_GetMetadata" Condition="'@(ServiceFileReference)' != ''">
<ItemGroup>
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
<GetFileReferenceMetadata Inputs="@(ServiceFileReference)"
CSharpNamespace="$(ServiceFileReferenceCSharpNamespace)"
OutputDirectory="$(ServiceFileReferenceDirectory)"
TypeScriptNamespace="$(ServiceFileReferenceTypeScriptNamespace)">
<Output TaskParameter="Outputs" ItemName="_Temporary" />
</GetFileReferenceMetadata>
<ItemGroup>
<ServiceFileReference Remove="@(ServiceFileReference)" />
<ServiceFileReference Include="@(_Temporary)" />
<_Temporary Remove="@(_Temporary)" />
</ItemGroup>
</Target>
<Target Name="_ServiceFileReferenceGenerator_GetItems">
<GetCurrentItems Input="$(GeneratorMetadata)">
<Output TaskParameter="Outputs" ItemName="CurrentServiceFileReference" />
</GetCurrentItems>
</Target>
<Target Name="_ServiceFileReferenceGenerator_Inner" DependsOnTargets="_ServiceFileReferenceGenerator_GetItems;$(GeneratorTarget)" />
<Target Name="_ServiceFileReferenceGenerator_Core" Inputs="@(ServiceFileReference)" Outputs="%(OutputPath)">
<Message Importance="high" Text="%0A_ServiceFileReferenceGenerator_Core:" />
<Message Importance="high" Text=" @(ServiceFileReference): %(DocumentPath)" />
<MSBuild BuildInParallel="$(BuildInParallel)"
Projects="$(MSBuildProjectFullPath)"
Properties="GeneratorTargetPath=%(ServiceProjectReference.OutputPath);GeneratorTarget=%(CodeGenerator)CodeGenerator;GeneratorMetadata=%(SerializedMetadata);TargetFramework=%(ProjectTargetFramework)"
RemoveProperties="TargetFrameworks;RuntimeIdentifier"
Targets="_ServiceFileReferenceGenerator_Inner" />
</Target>
<Target Name="_ServiceFileReferenceGenerator_SetMetadata" Condition="'@(ServiceFileReference)' != ''">
<!--
While %(DocumentPath) metadata may include duplicates (due to overlaps between ServiceUriReference and
ServiceProjectReference items), _ServiceFileReferenceGenerator_GetMetadata guarantees %(OutputPath) values are
unique.
-->
<ItemGroup>
<Compile Remove="@(ServiceFileReference -> '%(OutputPath)')" />
<Compile Include="@(ServiceFileReference -> '%(OutputPath)')" SourceDocument="%(FullPath)" />
</ItemGroup>
</Target>
<Target Name="ServiceFileReferenceGenerator"
BeforeTargets="BeforeCompile"
DependsOnTargets="$(ServiceFileReferenceGeneratorDependsOn)" />
</Project>