291 lines
13 KiB
XML
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="<not-a-file !>">
|
|
<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="<not-a-file !>">
|
|
<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>
|