Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -200,14 +200,16 @@ Copyright (c) .NET Foundation. All rights reserved.
<ItemGroup>
<_PublishStaticWebAssetsCopyAlways Include="@(_PublishStaticWebAssetsTargetPath)" Condition="'%(CopyToPublishDirectory)' == 'Always'" />
<_PublishStaticWebAssetsPreserveNewest Include="@(_PublishStaticWebAssetsTargetPath)" Condition="'%(CopyToPublishDirectory)' == 'PreserveNewest'" />
<_PublishStaticWebAssetsIfDifferent Include="@(_PublishStaticWebAssetsTargetPath)" Condition="'%(CopyToPublishDirectory)' == 'IfDifferent'" />
</ItemGroup>

</Target>

<Target Name="_PublishCopyStaticWebAssetsPreserveNewest"
Inputs="@(_PublishStaticWebAssetsPreserveNewest)"
Outputs="@(_PublishStaticWebAssetsPreserveNewest->'$(PublishDir)%(TargetPath)')"
AfterTargets="_SplitPublishStaticWebAssetsByCopyOptions">
AfterTargets="_SplitPublishStaticWebAssetsByCopyOptions"
Condition=" '@(_PublishStaticWebAssetsPreserveNewest)' != '' ">

<Copy SourceFiles="@(_PublishStaticWebAssetsPreserveNewest)"
DestinationFiles="@(_PublishStaticWebAssetsPreserveNewest->'$(PublishDir)%(TargetPath)')"
Expand All @@ -224,7 +226,8 @@ Copyright (c) .NET Foundation. All rights reserved.
</Target>

<Target Name="_PublishCopyStaticWebAssetsAlways"
AfterTargets="_SplitPublishStaticWebAssetsByCopyOptions">
AfterTargets="_SplitPublishStaticWebAssetsByCopyOptions"
Condition=" '@(_PublishStaticWebAssetsCopyAlways)' != '' ">

<Copy SourceFiles="@(_PublishStaticWebAssetsCopyAlways)"
DestinationFiles="@(_PublishStaticWebAssetsCopyAlways->'$(PublishDir)%(TargetPath)')"
Expand All @@ -239,6 +242,28 @@ Copyright (c) .NET Foundation. All rights reserved.
</Copy>

</Target>

<Target Name="_PublishCopyStaticWebAssetsIfDifferent"
AfterTargets="_SplitPublishStaticWebAssetsByCopyOptions"
Condition=" '@(_PublishStaticWebAssetsIfDifferent)' != '' ">

<!--
Using SkipUnchangedFiles="true" because we want only differing files.
-->
<Copy SourceFiles="@(_PublishStaticWebAssetsIfDifferent)"
DestinationFiles="@(_PublishStaticWebAssetsIfDifferent->'$(PublishDir)%(TargetPath)')"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">

<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>

</Copy>

</Target>

<Target Name="CopyStaticWebAssetsEndpointsManifest" DependsOnTargets="GenerateStaticWebAssetsPublishManifest"
AfterTargets="CopyStaticWebAssetsToPublishDirectory">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<ItemGroup>
<_BuildStaticWebAssetsCopyAlways Include="@(_BuildStaticWebAssetsTargetPath)" Condition="'%(CopyToOutputDirectory)' == 'Always'" />
<_BuildStaticWebAssetsPreserveNewest Include="@(_BuildStaticWebAssetsTargetPath)" Condition="'%(CopyToOutputDirectory)' == 'PreserveNewest'" />
<_BuildStaticWebAssetsIfDifferent Include="@(_BuildStaticWebAssetsTargetPath)" Condition="'%(CopyToOutputDirectory)' == 'IfDifferent'" />
</ItemGroup>

</Target>
Expand Down Expand Up @@ -537,8 +538,29 @@ Copyright (c) .NET Foundation. All rights reserved.
</Copy>

</Target>

<Target Name="_BuildCopyStaticWebAssetsIfDifferent"
AfterTargets="_SplitStaticWebAssetsByCopyOptions">

<!--
Using SkipUnchangedFiles="true" because we want only differing files.
-->
<Copy SourceFiles="@(_BuildStaticWebAssetsIfDifferent)"
DestinationFiles="@(_BuildStaticWebAssetsIfDifferent->'%(TargetPath)')"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">

<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>

</Copy>

</Target>

<Target Name="WriteStaticWebAssetsUpToDateCheck" DependsOnTargets="_BuildCopyStaticWebAssetsPreserveNewest;_BuildCopyStaticWebAssetsAlways">
<Target Name="WriteStaticWebAssetsUpToDateCheck" DependsOnTargets="_BuildCopyStaticWebAssetsPreserveNewest;_BuildCopyStaticWebAssetsAlways;_BuildCopyStaticWebAssetsIfDifferent">

<ItemGroup>
<_UpToDateCheckStaticWebAssetCandidate Include="@(StaticWebAsset)" Condition="'%(SourceType)' == 'Discovered'" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ Copyright (c) .NET Foundation. All rights reserved.
DependsOnTargets="_IncrementalCleanPublishDirectory;
_CopyResolvedFilesToPublishPreserveNewest;
_CopyResolvedFilesToPublishAlways;
_CopyResolvedFilesToPublishIfDifferent;
_HandleFileConflictsForPublish" />

<!--
Expand Down Expand Up @@ -410,6 +411,33 @@ Copyright (c) .NET Foundation. All rights reserved.

</Copy>
</Target>

<!--
============================================================
_CopyResolvedFilesToPublishIfDifferent

Copy _ResolvedFileToPublishIfDifferent items to the publish directory
============================================================
-->
<Target Name="_CopyResolvedFilesToPublishIfDifferent"
DependsOnTargets="_ComputeResolvedFilesToPublishTypes">

<!--
Using SkipUnchangedFiles="true" because we want only differing files.
-->
<Copy SourceFiles = "@(_ResolvedFileToPublishIfDifferent)"
DestinationFiles="@(_ResolvedFileToPublishIfDifferent->'$(PublishDir)%(RelativePath)')"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">

<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>

</Copy>
</Target>

<UsingTask TaskName="ResolveReadyToRunCompilers" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
<Target Name="ResolveReadyToRunCompilers">
Expand All @@ -431,7 +459,7 @@ Copyright (c) .NET Foundation. All rights reserved.
============================================================
_ComputeResolvedFilesToPublishTypes

Splits ResolvedFileToPublish items into 'PreserveNewest' and 'Always' buckets.
Splits ResolvedFileToPublish items into 'PreserveNewest', 'Always' and 'IfDifferent' buckets.
Then further splits those into 'Unbundled' buckets based on the single file setting.
============================================================
-->
Expand All @@ -443,6 +471,9 @@ Copyright (c) .NET Foundation. All rights reserved.

<_ResolvedFileToPublishAlways Include="@(ResolvedFileToPublish)"
Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='Always'" />

<_ResolvedFileToPublishIfDifferent Include="@(ResolvedFileToPublish)"
Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='IfDifferent'" />
</ItemGroup>

<ItemGroup>
Expand All @@ -456,6 +487,11 @@ Copyright (c) .NET Foundation. All rights reserved.
Include="@(_ResolvedFileToPublishAlways)"
Condition="'$(PublishSingleFile)' != 'true' or
'%(_ResolvedFileToPublishAlways.ExcludeFromSingleFile)'=='true'" />

<_ResolvedUnbundledFileToPublishIfDifferent
Include="@(_ResolvedFileToPublishIfDifferent)"
Condition="'$(PublishSingleFile)' != 'true' or
'%(_ResolvedFileToPublishIfDifferent.ExcludeFromSingleFile)'=='true'" />
</ItemGroup>
</Target>

Expand Down Expand Up @@ -784,6 +820,12 @@ Copyright (c) .NET Foundation. All rights reserved.
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<IsKeyOutput Condition="'%(_SourceItemsToCopyToPublishDirectory.FullPath)' == '$(AppHostIntermediatePath)'">True</IsKeyOutput>
</ResolvedFileToPublish>

<ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectoryIfDifferent)">
<RelativePath>%(_SourceItemsToCopyToPublishDirectoryIfDifferent.TargetPath)</RelativePath>
<CopyToPublishDirectory>IfDifferent</CopyToPublishDirectory>
<IsKeyOutput Condition="'%(_SourceItemsToCopyToPublishDirectoryIfDifferent.FullPath)' == '$(AppHostIntermediatePath)'">True</IsKeyOutput>
</ResolvedFileToPublish>
</ItemGroup>

</Target>
Expand Down Expand Up @@ -845,6 +887,10 @@ Copyright (c) .NET Foundation. All rights reserved.
KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')"
Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
<_SourceItemsToCopyToPublishDirectoryIfDifferent KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' "
KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')"
Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='IfDifferent'"/>
</ItemGroup>

<!-- Remove items which we will never again use - they just sit around taking up memory otherwise -->
Expand All @@ -860,6 +906,9 @@ Copyright (c) .NET Foundation. All rights reserved.
<_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(ContentWithTargetPath->'%(FullPath)')"
Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
<_SourceItemsToCopyToPublishDirectoryIfDifferent KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(ContentWithTargetPath->'%(FullPath)')"
Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='IfDifferent'"/>
</ItemGroup>

<ItemGroup>
Expand All @@ -869,11 +918,14 @@ Copyright (c) .NET Foundation. All rights reserved.
<_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(EmbeddedResource->'%(FullPath)')"
Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='PreserveNewest'"/>
<_SourceItemsToCopyToPublishDirectoryIfDifferent KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(EmbeddedResource->'%(FullPath)')"
Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='IfDifferent'"/>
</ItemGroup>

<ItemGroup>
<_CompileItemsToPublish Include="@(Compile->'%(FullPath)')"
Condition="'%(Compile.CopyToPublishDirectory)'=='Always' or '%(Compile.CopyToPublishDirectory)'=='PreserveNewest'"/>
Condition="'%(Compile.CopyToPublishDirectory)'=='Always' or '%(Compile.CopyToPublishDirectory)'=='PreserveNewest'" or '%(Compile.CopyToPublishDirectory)'=='IfDifferent'"/>
</ItemGroup>

<AssignTargetPath Files="@(_CompileItemsToPublish)" RootFolder="$(MSBuildProjectDirectory)">
Expand All @@ -887,6 +939,9 @@ Copyright (c) .NET Foundation. All rights reserved.
<_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(_CompileItemsToPublishWithTargetPath)"
Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
<_SourceItemsToCopyToPublishDirectoryIfDifferent KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(_CompileItemsToPublishWithTargetPath)"
Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='IfDifferent'"/>
</ItemGroup>

<ItemGroup>
Expand All @@ -896,12 +951,16 @@ Copyright (c) .NET Foundation. All rights reserved.
<_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(_NoneWithTargetPath->'%(FullPath)')"
Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
<_SourceItemsToCopyToPublishDirectoryIfDifferent KeepMetadata="$(_GCTPDIKeepMetadata)"
Include="@(_NoneWithTargetPath->'%(FullPath)')"
Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='IfDifferent'"/>
</ItemGroup>

<ItemGroup Condition="'$(_UseSingleFileHostForPublish)' == 'true' and Exists('$(SingleFileHostIntermediatePath)')">
<!-- Remove non-single-file apphost from items to publish -->
<_SourceItemsToCopyToPublishDirectoryAlways Remove="$(AppHostIntermediatePath)" />
<_SourceItemsToCopyToPublishDirectory Remove="$(AppHostIntermediatePath)" />
<_SourceItemsToCopyToPublishDirectoryIfDifferent Remove="$(AppHostIntermediatePath)" />

<!-- Add the single-file host created as part of publish -->
<_SourceItemsToCopyToPublishDirectoryAlways Include="$(SingleFileHostIntermediatePath)" CopyToOutputDirectory="Always" TargetPath="$(AssemblyName)$(_NativeExecutableExtension)" />
Expand All @@ -911,13 +970,14 @@ Copyright (c) .NET Foundation. All rights reserved.
<!-- Remove apphost from build from items to publish -->
<_SourceItemsToCopyToPublishDirectoryAlways Remove="$(AppHostIntermediatePath)" />
<_SourceItemsToCopyToPublishDirectory Remove="$(AppHostIntermediatePath)" />
<_SourceItemsToCopyToPublishDirectoryIfDifferent Remove="$(AppHostIntermediatePath)" />

<!-- Add the apphost created as part of publish -->
<_SourceItemsToCopyToPublishDirectoryAlways Include="$(AppHostForPublishIntermediatePath)" CopyToOutputDirectory="Always" TargetPath="$(AssemblyName)$(_NativeExecutableExtension)" />
</ItemGroup>

<ItemGroup>
<AllPublishItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToPublishDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectory->'%(FullPath)')"/>
<AllPublishItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToPublishDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectory->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectoryIfDifferent->'%(FullPath)')"/>
</ItemGroup>

</Target>
Expand All @@ -927,7 +987,7 @@ Copyright (c) .NET Foundation. All rights reserved.
DefaultCopyToPublishDirectoryMetadata

If CopyToPublishDirectory isn't set on these items, the value should be taken from CopyToOutputDirectory.
This way, projects can just set "CopyToOutputDirectory = Always/PreserveNewest" and by default the item will be copied
This way, projects can just set "CopyToOutputDirectory = Always/PreserveNewest/IfDifferent" and by default the item will be copied
to both the build output and publish directories.
============================================================
-->
Expand All @@ -942,27 +1002,39 @@ Copyright (c) .NET Foundation. All rights reserved.
<ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ContentWithTargetPath>
<ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='IfDifferent' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>IfDifferent</CopyToPublishDirectory>
</ContentWithTargetPath>

<EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</EmbeddedResource>
<EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</EmbeddedResource>
<EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='IfDifferent' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>IfDifferent</CopyToPublishDirectory>
</EmbeddedResource>

<Compile Condition="'%(Compile.CopyToOutputDirectory)'=='Always' and '%(Compile.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</Compile>
<Compile Condition="'%(Compile.CopyToOutputDirectory)'=='PreserveNewest' and '%(Compile.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Compile>
<Compile Condition="'%(Compile.CopyToOutputDirectory)'=='IfDifferent' and '%(Compile.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>IfDifferent</CopyToPublishDirectory>
</Compile>

<_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</_NoneWithTargetPath>
<_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</_NoneWithTargetPath>
<_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='IfDifferent' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
<CopyToPublishDirectory>IfDifferent</CopyToPublishDirectory>
</_NoneWithTargetPath>

</ItemGroup>
</Target>
Expand Down
Loading