Use the `JoinItems` task rather than faking it in an item group (#21349)
* Use the `JoinItems` task rather than faking it in an item group - speeds up the build and reduces the size of our binary logs * !fixup! Remove duplicate `@(LatestPackageReference)` item for unit.extensibility.execution - `JoinItems` task a bit more finicky than previous cross-product hack
This commit is contained in:
parent
100823af0d
commit
14e7fcb713
|
|
@ -182,7 +182,6 @@ and are generated based on the last package release.
|
|||
<LatestPackageReference Include="xunit.assert" Version="$(XunitAssertPackageVersion)" />
|
||||
<LatestPackageReference Include="xunit.extensibility.core" Version="$(XunitExtensibilityCorePackageVersion)" />
|
||||
<LatestPackageReference Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
|
||||
<LatestPackageReference Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Data.SqlClient" Version="$(MicrosoftDataSqlClientPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -144,41 +144,40 @@
|
|||
<UnusedBaselinePackageReference Include="@(BaselinePackageReference)" Exclude="@(Reference);@(_ProjectReferenceByAssemblyName);@(PackageReference)" />
|
||||
<!-- Only allow suppressing baseline changes in non-servicing builds. -->
|
||||
<UnusedBaselinePackageReference Remove="@(SuppressBaselineReference)" Condition="'$(IsServicingBuild)' != 'true'"/>
|
||||
</ItemGroup>
|
||||
|
||||
<!--
|
||||
MSBuild does not provide a way to join on matching identities in a Condition,
|
||||
but you can do a cartesian product of two item groups and filter out mismatched id's in a second pass.
|
||||
-->
|
||||
<_LatestPackageReferenceWithVersion Include="@(Reference)" Condition=" '$(UseLatestPackageReferences)' == 'true' ">
|
||||
<Id>%(LatestPackageReference.Identity)</Id>
|
||||
<Version>%(LatestPackageReference.Version)</Version>
|
||||
</_LatestPackageReferenceWithVersion>
|
||||
<_LatestPackageReferenceWithVersion Remove="@(_LatestPackageReferenceWithVersion)" Condition="'%(Id)' != '%(Identity)' " />
|
||||
<JoinItems Left="@(Reference)" Right="@(LatestPackageReference)" LeftMetadata="*" RightMetadata="Version"
|
||||
Condition=" '$(UseLatestPackageReferences)' == 'true' ">
|
||||
<Output TaskParameter="JoinResult" ItemName="_LatestPackageReferenceWithVersion" />
|
||||
</JoinItems>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Remove reference items that have been resolved to a LatestPackageReference item. -->
|
||||
<Reference Remove="@(_LatestPackageReferenceWithVersion)" />
|
||||
<PackageReference Include="@(_LatestPackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
||||
<Reference Remove="@(_LatestPackageReferenceWithVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Resolve references from BaselinePackageReference for servicing builds. -->
|
||||
<_BaselinePackageReferenceWithVersion Include="@(Reference)" Condition=" '$(IsServicingBuild)' == 'true' OR '$(UseLatestPackageReferences)' != 'true' ">
|
||||
<Id>%(BaselinePackageReference.Identity)</Id>
|
||||
<Version>%(BaselinePackageReference.Version)</Version>
|
||||
</_BaselinePackageReferenceWithVersion>
|
||||
|
||||
<_BaselinePackageReferenceWithVersion Remove="@(_BaselinePackageReferenceWithVersion)" Condition="'%(Id)' != '%(Identity)' " />
|
||||
<!-- Resolve references from BaselinePackageReference for servicing builds in corner cases. May be unused. -->
|
||||
<JoinItems Left="@(Reference)" Right="@(BaselinePackageReference)" LeftMetadata="*" RightMetadata="Version"
|
||||
Condition=" '$(IsServicingBuild)' == 'true' OR '$(UseLatestPackageReferences)' != 'true' ">
|
||||
<Output TaskParameter="JoinResult" ItemName="_BaselinePackageReferenceWithVersion" />
|
||||
</JoinItems>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Remove reference items that have been resolved to a BaselinePackageReference item. -->
|
||||
<PackageReference Include="@(_BaselinePackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
||||
<Reference Remove="@(_BaselinePackageReferenceWithVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- For PrivateAssets=All references, like .Sources packages, fallback to LatestPackageReferences. -->
|
||||
<_PrivatePackageReferenceWithVersion Include="@(Reference->WithMetadataValue('PrivateAssets', 'All'))">
|
||||
<Id>%(LatestPackageReference.Identity)</Id>
|
||||
<Version>%(LatestPackageReference.Version)</Version>
|
||||
</_PrivatePackageReferenceWithVersion>
|
||||
|
||||
<_PrivatePackageReferenceWithVersion Remove="@(_PrivatePackageReferenceWithVersion)" Condition="'%(Id)' != '%(Identity)' " />
|
||||
<!-- For PrivateAssets=All references, like .Sources packages, fallback to LatestPackageReferences. -->
|
||||
<JoinItems Left="@(Reference->WithMetadataValue('PrivateAssets', 'All'))"
|
||||
Right="@(LatestPackageReference)"
|
||||
LeftMetadata="*"
|
||||
RightMetadata="Version">
|
||||
<Output TaskParameter="JoinResult" ItemName="_PrivatePackageReferenceWithVersion" />
|
||||
</JoinItems>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Remove reference items that have been resolved to a LatestPackageReference item. -->
|
||||
<PackageReference Include="@(_PrivatePackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
||||
<Reference Remove="@(_PrivatePackageReferenceWithVersion)" />
|
||||
|
|
@ -287,4 +286,4 @@
|
|||
<Output TaskParameter="TargetOutputs" ItemName="_MSBuildProjectReferenceExistent" />
|
||||
</MSBuild>
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
|||
Loading…
Reference in New Issue