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.assert" Version="$(XunitAssertPackageVersion)" />
|
||||||
<LatestPackageReference Include="xunit.extensibility.core" Version="$(XunitExtensibilityCorePackageVersion)" />
|
<LatestPackageReference Include="xunit.extensibility.core" Version="$(XunitExtensibilityCorePackageVersion)" />
|
||||||
<LatestPackageReference Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
|
<LatestPackageReference Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
|
||||||
<LatestPackageReference Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
|
|
||||||
<LatestPackageReference Include="Microsoft.Data.SqlClient" Version="$(MicrosoftDataSqlClientPackageVersion)" />
|
<LatestPackageReference Include="Microsoft.Data.SqlClient" Version="$(MicrosoftDataSqlClientPackageVersion)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -144,41 +144,40 @@
|
||||||
<UnusedBaselinePackageReference Include="@(BaselinePackageReference)" Exclude="@(Reference);@(_ProjectReferenceByAssemblyName);@(PackageReference)" />
|
<UnusedBaselinePackageReference Include="@(BaselinePackageReference)" Exclude="@(Reference);@(_ProjectReferenceByAssemblyName);@(PackageReference)" />
|
||||||
<!-- Only allow suppressing baseline changes in non-servicing builds. -->
|
<!-- Only allow suppressing baseline changes in non-servicing builds. -->
|
||||||
<UnusedBaselinePackageReference Remove="@(SuppressBaselineReference)" Condition="'$(IsServicingBuild)' != 'true'"/>
|
<UnusedBaselinePackageReference Remove="@(SuppressBaselineReference)" Condition="'$(IsServicingBuild)' != 'true'"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<!--
|
<JoinItems Left="@(Reference)" Right="@(LatestPackageReference)" LeftMetadata="*" RightMetadata="Version"
|
||||||
MSBuild does not provide a way to join on matching identities in a Condition,
|
Condition=" '$(UseLatestPackageReferences)' == 'true' ">
|
||||||
but you can do a cartesian product of two item groups and filter out mismatched id's in a second pass.
|
<Output TaskParameter="JoinResult" ItemName="_LatestPackageReferenceWithVersion" />
|
||||||
-->
|
</JoinItems>
|
||||||
<_LatestPackageReferenceWithVersion Include="@(Reference)" Condition=" '$(UseLatestPackageReferences)' == 'true' ">
|
|
||||||
<Id>%(LatestPackageReference.Identity)</Id>
|
|
||||||
<Version>%(LatestPackageReference.Version)</Version>
|
|
||||||
</_LatestPackageReferenceWithVersion>
|
|
||||||
<_LatestPackageReferenceWithVersion Remove="@(_LatestPackageReferenceWithVersion)" Condition="'%(Id)' != '%(Identity)' " />
|
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
<!-- Remove reference items that have been resolved to a LatestPackageReference item. -->
|
<!-- Remove reference items that have been resolved to a LatestPackageReference item. -->
|
||||||
<Reference Remove="@(_LatestPackageReferenceWithVersion)" />
|
|
||||||
<PackageReference Include="@(_LatestPackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
<PackageReference Include="@(_LatestPackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
||||||
|
<Reference Remove="@(_LatestPackageReferenceWithVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<!-- Resolve references from BaselinePackageReference for servicing builds. -->
|
<!-- Resolve references from BaselinePackageReference for servicing builds in corner cases. May be unused. -->
|
||||||
<_BaselinePackageReferenceWithVersion Include="@(Reference)" Condition=" '$(IsServicingBuild)' == 'true' OR '$(UseLatestPackageReferences)' != 'true' ">
|
<JoinItems Left="@(Reference)" Right="@(BaselinePackageReference)" LeftMetadata="*" RightMetadata="Version"
|
||||||
<Id>%(BaselinePackageReference.Identity)</Id>
|
Condition=" '$(IsServicingBuild)' == 'true' OR '$(UseLatestPackageReferences)' != 'true' ">
|
||||||
<Version>%(BaselinePackageReference.Version)</Version>
|
<Output TaskParameter="JoinResult" ItemName="_BaselinePackageReferenceWithVersion" />
|
||||||
</_BaselinePackageReferenceWithVersion>
|
</JoinItems>
|
||||||
|
|
||||||
<_BaselinePackageReferenceWithVersion Remove="@(_BaselinePackageReferenceWithVersion)" Condition="'%(Id)' != '%(Identity)' " />
|
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
<!-- Remove reference items that have been resolved to a BaselinePackageReference item. -->
|
<!-- Remove reference items that have been resolved to a BaselinePackageReference item. -->
|
||||||
<PackageReference Include="@(_BaselinePackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
<PackageReference Include="@(_BaselinePackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
||||||
<Reference Remove="@(_BaselinePackageReferenceWithVersion)" />
|
<Reference Remove="@(_BaselinePackageReferenceWithVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<!-- For PrivateAssets=All references, like .Sources packages, fallback to LatestPackageReferences. -->
|
<!-- For PrivateAssets=All references, like .Sources packages, fallback to LatestPackageReferences. -->
|
||||||
<_PrivatePackageReferenceWithVersion Include="@(Reference->WithMetadataValue('PrivateAssets', 'All'))">
|
<JoinItems Left="@(Reference->WithMetadataValue('PrivateAssets', 'All'))"
|
||||||
<Id>%(LatestPackageReference.Identity)</Id>
|
Right="@(LatestPackageReference)"
|
||||||
<Version>%(LatestPackageReference.Version)</Version>
|
LeftMetadata="*"
|
||||||
</_PrivatePackageReferenceWithVersion>
|
RightMetadata="Version">
|
||||||
|
<Output TaskParameter="JoinResult" ItemName="_PrivatePackageReferenceWithVersion" />
|
||||||
<_PrivatePackageReferenceWithVersion Remove="@(_PrivatePackageReferenceWithVersion)" Condition="'%(Id)' != '%(Identity)' " />
|
</JoinItems>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
<!-- Remove reference items that have been resolved to a LatestPackageReference item. -->
|
<!-- Remove reference items that have been resolved to a LatestPackageReference item. -->
|
||||||
<PackageReference Include="@(_PrivatePackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
<PackageReference Include="@(_PrivatePackageReferenceWithVersion)" IsImplicitlyDefined="true" />
|
||||||
<Reference Remove="@(_PrivatePackageReferenceWithVersion)" />
|
<Reference Remove="@(_PrivatePackageReferenceWithVersion)" />
|
||||||
|
|
@ -287,4 +286,4 @@
|
||||||
<Output TaskParameter="TargetOutputs" ItemName="_MSBuildProjectReferenceExistent" />
|
<Output TaskParameter="TargetOutputs" ItemName="_MSBuildProjectReferenceExistent" />
|
||||||
</MSBuild>
|
</MSBuild>
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue