Skip to content

Commit cf2977b

Browse files
Move asset compression to the StaticWebAssets SDK (#31559)
1 parent a59ee31 commit cf2977b

File tree

43 files changed

+4396
-3581
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+4396
-3581
lines changed

sdk.sln

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tasks", "Tasks", "{6C8E1E65
437437
EndProject
438438
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.NET.Sdk.StaticWebAssets.Tasks", "src\StaticWebAssetsSdk\Tasks\Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj", "{3D42A6BA-38DB-4AA5-9F86-8A78D00D9A07}"
439439
EndProject
440+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tool", "Tool", "{51A31407-7C6A-42E9-93B8-F21DEC518A34}"
441+
EndProject
442+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.NET.Sdk.StaticWebAssets.Tool", "src\StaticWebAssetsSdk\Tool\Microsoft.NET.Sdk.StaticWebAssets.Tool.csproj", "{B8550E71-0CBE-4F88-AC79-2003EFED1DE1}"
443+
EndProject
440444
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WasmSdk", "WasmSdk", "{21835A9E-D667-4761-8675-B2BC105CC2FE}"
441445
EndProject
442446
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{71BC1256-D225-4272-ADB2-95264E09AF73}"
@@ -856,6 +860,10 @@ Global
856860
{3D42A6BA-38DB-4AA5-9F86-8A78D00D9A07}.Debug|Any CPU.Build.0 = Debug|Any CPU
857861
{3D42A6BA-38DB-4AA5-9F86-8A78D00D9A07}.Release|Any CPU.ActiveCfg = Release|Any CPU
858862
{3D42A6BA-38DB-4AA5-9F86-8A78D00D9A07}.Release|Any CPU.Build.0 = Release|Any CPU
863+
{B8550E71-0CBE-4F88-AC79-2003EFED1DE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
864+
{B8550E71-0CBE-4F88-AC79-2003EFED1DE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
865+
{B8550E71-0CBE-4F88-AC79-2003EFED1DE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
866+
{B8550E71-0CBE-4F88-AC79-2003EFED1DE1}.Release|Any CPU.Build.0 = Release|Any CPU
859867
{754C18B9-AEDB-4455-BAF4-844C6CEEF8F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
860868
{754C18B9-AEDB-4455-BAF4-844C6CEEF8F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
861869
{754C18B9-AEDB-4455-BAF4-844C6CEEF8F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -1034,6 +1042,8 @@ Global
10341042
{C5C73211-A713-40BF-8FC8-A690CCBE66F5} = {9E9F3BB2-6FED-47BC-869C-BFAF6E7C85FC}
10351043
{6C8E1E65-EA73-434D-818F-E564BFFE9F86} = {9E9F3BB2-6FED-47BC-869C-BFAF6E7C85FC}
10361044
{3D42A6BA-38DB-4AA5-9F86-8A78D00D9A07} = {6C8E1E65-EA73-434D-818F-E564BFFE9F86}
1045+
{51A31407-7C6A-42E9-93B8-F21DEC518A34} = {9E9F3BB2-6FED-47BC-869C-BFAF6E7C85FC}
1046+
{B8550E71-0CBE-4F88-AC79-2003EFED1DE1} = {51A31407-7C6A-42E9-93B8-F21DEC518A34}
10371047
{21835A9E-D667-4761-8675-B2BC105CC2FE} = {22AB674F-ED91-4FBC-BFEE-8A1E82F9F05E}
10381048
{71BC1256-D225-4272-ADB2-95264E09AF73} = {21835A9E-D667-4761-8675-B2BC105CC2FE}
10391049
{B2CE3F28-8FEC-4715-B483-5B442E3136CE} = {21835A9E-D667-4761-8675-B2BC105CC2FE}

source-build.slnf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"src\\Resolvers\\Microsoft.NET.Sdk.WorkloadManifestReader\\Microsoft.NET.Sdk.WorkloadManifestReader.csproj",
4040
"src\\Resolvers\\WorkloadManifestValidator\\WorkloadManifestValidator.csproj",
4141
"src\\StaticWebAssetsSdk\\Tasks\\Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj",
42+
"src\\StaticWebAssetsSdk\\Tool\\Microsoft.NET.Sdk.StaticWebAssets.Tool.csproj",
4243
"src\\Tasks\\Microsoft.NET.Build.Extensions.Tasks\\Microsoft.NET.Build.Extensions.Tasks.csproj",
4344
"src\\Tasks\\Microsoft.NET.Build.Tasks\\Microsoft.NET.Build.Tasks.csproj",
4445
"src\\WebSdk\\ProjectSystem\\Tasks\\Microsoft.NET.Sdk.Web.ProjectSystem.Tasks.csproj",

src/BlazorWasmSdk/Targets/Microsoft.NET.Sdk.BlazorWebAssembly.6_0.targets

Lines changed: 6 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ Copyright (c) .NET Foundation. All rights reserved.
3333
<_BlazorWebAssemblySdkToolAssembly>$(BlazorWebAssemblySdkDirectoryRoot)tools\net8.0\Microsoft.NET.Sdk.BlazorWebAssembly.Tool.dll</_BlazorWebAssemblySdkToolAssembly>
3434
</PropertyGroup>
3535

36-
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.BrotliCompress" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />
37-
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.GzipCompress" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />
3836
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.CreateBlazorTrimmerRootDescriptorFile" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />
39-
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.ComputeBlazorFilesToCompress" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />
4037
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.GenerateBlazorBootExtensionJson" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />
4138

4239
<PropertyGroup>
@@ -60,24 +57,21 @@ Copyright (c) .NET Foundation. All rights reserved.
6057

6158
<DisableAutoWasmBuildApp>true</DisableAutoWasmBuildApp>
6259
<DisableAutoWasmPublishApp>true</DisableAutoWasmPublishApp>
63-
<BlazorEnableCompression Condition="'$(WasmBuildingForNestedPublish)' == 'true'">false</BlazorEnableCompression>
60+
<WasmNestedPublishAppDependsOn>_GatherBlazorFilesToPublish;$(WasmNestedPublishAppDependsOn)</WasmNestedPublishAppDependsOn>
6461
</PropertyGroup>
6562

6663
<!-- Wire-up static web assets -->
6764
<PropertyGroup>
68-
<GenerateStaticWebAssetsPublishManifestDependsOn Condition="'$(WasmBuildingForNestedPublish)' != 'true'">
69-
$(GenerateStaticWebAssetsPublishManifestDependsOn);
70-
_BlazorCompressPublishFiles;
71-
</GenerateStaticWebAssetsPublishManifestDependsOn>
72-
73-
<AddWasmStaticWebAssetsDependsOn>
74-
$(AddWasmStaticWebAssetsDependsOn);
65+
<ResolveStaticWebAssetsInputsDependsOn>
66+
$(ResolveStaticWebAssetsInputsDependsOn);
7567
_ResolveBlazorWasmOutputs;
76-
</AddWasmStaticWebAssetsDependsOn>
68+
</ResolveStaticWebAssetsInputsDependsOn>
69+
7770
<GenerateBuildWasmBootJsonDependsOn>
7871
$(GenerateBuildWasmBootJsonDependsOn);
7972
GenerateBuildBlazorBootExtensionJson;
8073
</GenerateBuildWasmBootJsonDependsOn>
74+
8175
<GeneratePublishWasmBootJsonDependsOn>
8276
$(GeneratePublishWasmBootJsonDependsOn);
8377
GeneratePublishBlazorBootExtensionJson;
@@ -125,44 +119,8 @@ Copyright (c) .NET Foundation. All rights reserved.
125119
<Output TaskParameter="Assets" ItemName="_BlazorJSStaticWebAsset" />
126120
</DefineStaticWebAssets>
127121

128-
<PropertyGroup>
129-
<_BlazorBuildGZipCompressDirectory>$(IntermediateOutputPath)build-gz\</_BlazorBuildGZipCompressDirectory>
130-
</PropertyGroup>
131-
132-
<!--
133-
Compress referenced binaries using GZip during build. This skips files such as the project's assemblies
134-
that change from build to build. Runtime assets contribute to the bulk of the download size. Compressing it
135-
has the most benefit while avoiding any ongoing costs to the dev inner loop.
136-
-->
137-
138-
<ItemGroup>
139-
<_BlazorStaticWebAsset Include="@(_BlazorJSStaticWebAsset)" />
140-
<_BlazorStaticWebAsset Include="@(WasmStaticWebAsset)" />
141-
</ItemGroup>
142-
143-
<ComputeBlazorFilesToCompress Assets="@(_BlazorStaticWebAsset)">
144-
<Output TaskParameter="AssetsToCompress" ItemName="_GzipFileToCompressForBuild" />
145-
</ComputeBlazorFilesToCompress>
146-
147-
<GZipCompress
148-
FilesToCompress="@(_GzipFileToCompressForBuild)"
149-
OutputDirectory="$(_BlazorBuildGZipCompressDirectory)">
150-
151-
<Output TaskParameter="CompressedFiles" ItemName="_BlazorBuildGZipCompressedFile" />
152-
<Output TaskParameter="CompressedFiles" ItemName="FileWrites" />
153-
</GZipCompress>
154-
155-
<ItemGroup>
156-
<_BlazorBuildGZipCompressedFile>
157-
<OriginalItemSpec>%(RelatedAsset)</OriginalItemSpec>
158-
</_BlazorBuildGZipCompressedFile>
159-
160-
<_BlazorGzipStaticWebAsset Include="@(_BlazorBuildGZipCompressedFile->'%(FullPath)')" />
161-
</ItemGroup>
162-
163122
<ItemGroup>
164123
<StaticWebAsset Include="@(_BlazorJSStaticWebAsset)" />
165-
<StaticWebAsset Include="@(_BlazorGzipStaticWebAsset)" />
166124
</ItemGroup>
167125
</Target>
168126

@@ -171,8 +129,6 @@ Copyright (c) .NET Foundation. All rights reserved.
171129
<Message Importance="High" Text="$(MSBuildProjectName) (Blazor output) -&gt; $(TargetDir)wwwroot" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" />
172130
</Target>
173131

174-
<!-- Publish starts here -->
175-
176132
<!-- Make sure that ResolveAssemblyReferences runs early enough to ensure satellite assemblies are populated in the ResolvedFilesToPublish -->
177133
<Target Name="_BlazorPrepareForPublish"
178134
DependsOnTargets="PrepareResourceNames;ComputeIntermediateSatelliteAssemblies;ResolveAssemblyReferences"
@@ -184,77 +140,6 @@ Copyright (c) .NET Foundation. All rights reserved.
184140
</ItemGroup>
185141
</Target>
186142

187-
<Target Name="_BlazorCompressPublishFiles" AfterTargets="GeneratePublishWasmBootJson" Condition="'$(BlazorEnableCompression)' != 'false'">
188-
<PropertyGroup>
189-
<_CompressedFileOutputPath>$(IntermediateOutputPath)compress\</_CompressedFileOutputPath>
190-
<_BlazorWebAssemblyBrotliIncremental>true</_BlazorWebAssemblyBrotliIncremental>
191-
</PropertyGroup>
192-
193-
<PropertyGroup Condition="'$(DOTNET_HOST_PATH)' == ''">
194-
<_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory>
195-
<_DotNetHostFileName>dotnet</_DotNetHostFileName>
196-
<_DotNetHostFileName Condition="'$(OS)' == 'Windows_NT'">dotnet.exe</_DotNetHostFileName>
197-
</PropertyGroup>
198-
199-
<Message Text="Compressing Blazor WebAssembly publish artifacts. This may take a while..." Importance="High" />
200-
201-
<MakeDir Directories="$(_CompressedFileOutputPath)" Condition="!Exists('$(_CompressedFileOutputPath)')" />
202-
203-
<ItemGroup>
204-
<_GzipFileToCompressForPublish Include="@(StaticWebAsset)"
205-
Condition="'%(AssetKind)' != 'Build' and ('%(StaticWebAsset.AssetTraitName)' == 'WasmResource' or '%(StaticWebAsset.AssetTraitName)' == 'Culture')" >
206-
<RelatedAsset>%(Identity)</RelatedAsset>
207-
<AssetRole>Alternative</AssetRole>
208-
<AssetTraitName>Content-Encoding</AssetTraitName>
209-
<AssetTraitValue>gzip</AssetTraitValue>
210-
</_GzipFileToCompressForPublish>
211-
212-
<_BrotliFileToCompressForPublish Include="@(_GzipFileToCompressForPublish)" Condition="'%(AssetKind)' != 'Build'">
213-
<AssetTraitValue>br</AssetTraitValue>
214-
</_BrotliFileToCompressForPublish>
215-
216-
<!-- We compressed a bunch of assets that were not modified since the build process. We can reuse those and avoid the extra compression we just
217-
need to check that they are still relevant (we have updated existing assets to account for linking) -->
218-
<_AlreadyGzipCompressedAssets
219-
Include="@(StaticWebAsset)"
220-
Condition="'%(AssetKind)' != 'Build' and ('%(StaticWebAsset.AssetTraitName)' == 'Content-Encoding' and '%(StaticWebAsset.AssetTraitValue)' == 'gzip')" />
221-
<_GzipFileToCompressForPublish Remove="@(_AlreadyGzipCompressedAssets->'%(RelatedAsset)')" />
222-
</ItemGroup>
223-
224-
<GZipCompress
225-
FilesToCompress="@(_GzipFileToCompressForPublish)"
226-
OutputDirectory="$(_CompressedFileOutputPath)">
227-
228-
<Output TaskParameter="CompressedFiles" ItemName="_BlazorPublishGZipCompressedFile" />
229-
<Output TaskParameter="CompressedFiles" ItemName="FileWrites" />
230-
</GZipCompress>
231-
232-
<BrotliCompress
233-
OutputDirectory="$(_CompressedFileOutputPath)"
234-
FilesToCompress="@(_BrotliFileToCompressForPublish)"
235-
CompressionLevel="$(_BlazorBrotliCompressionLevel)"
236-
SkipIfOutputIsNewer="$(_BlazorWebAssemblyBrotliIncremental)"
237-
ToolAssembly="$(_BlazorWebAssemblySdkToolAssembly)"
238-
ToolExe="$(_DotNetHostFileName)"
239-
ToolPath="$(_DotNetHostDirectory)">
240-
241-
<Output TaskParameter="CompressedFiles" ItemName="_BlazorPublishBrotliCompressedFile" />
242-
<Output TaskParameter="CompressedFiles" ItemName="FileWrites" />
243-
</BrotliCompress>
244-
245-
<ItemGroup>
246-
<_BlazorPublishGZipCompressedFile>
247-
<OriginalItemSpec>%(RelatedAsset)</OriginalItemSpec>
248-
</_BlazorPublishGZipCompressedFile>
249-
<_BlazorPublishBrotliCompressedFile>
250-
<OriginalItemSpec>%(RelatedAsset)</OriginalItemSpec>
251-
</_BlazorPublishBrotliCompressedFile>
252-
253-
<StaticWebAsset Include="@(_BlazorPublishGZipCompressedFile->'%(FullPath)')" />
254-
<StaticWebAsset Include="@(_BlazorPublishBrotliCompressedFile->'%(FullPath)')" />
255-
</ItemGroup>
256-
</Target>
257-
258143
<Target Name="GenerateBuildBlazorBootExtensionJson">
259144
<PropertyGroup>
260145
<_BlazorBuildBootExtensionJsonPath>$(IntermediateOutputPath)blazor.build.boot-extension.json</_BlazorBuildBootExtensionJsonPath>

src/BlazorWasmSdk/Tasks/ComputeBlazorFilesToCompress.cs

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/Layout/redist/targets/GenerateLayout.targets

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,29 @@
309309
SkipUnchangedFiles="true" />
310310
</Target>
311311

312+
<Target Name="PublishStaticWebAssetsTools"
313+
BeforeTargets="PublishNetSdks">
314+
<MSBuild
315+
Targets="Publish"
316+
Projects="$(RepoRoot)/src/StaticWebAssetsSdk/Tool/Microsoft.NET.Sdk.StaticWebAssets.Tool.csproj"
317+
Properties="Configuration=$(Configuration)" />
318+
</Target>
319+
320+
<Target Name="MoveStaticWebAssetsTools" AfterTargets="PublishStaticWebAssetsTools">
321+
<ItemGroup>
322+
<_StaticWebAssetsToolsOutput Include="$(ArtifactsBinDir)Microsoft.NET.Sdk.StaticWebAssets.Tool\$(Configuration)\$(SdkTargetFramework)\publish\*.*" />
323+
</ItemGroup>
324+
325+
<Error
326+
Text="StaticWebAssets SDK tools outputs were not found in $(ArtifactsBinDir)Microsoft.NET.Sdk.StaticWebAssets.Tool\$(Configuration)\$(SdkTargetFramework)\publish"
327+
Condition="'@(_StaticWebAssetsToolsOutput->Count())' == '0'" />
328+
329+
<Copy
330+
SourceFiles="@(_StaticWebAssetsToolsOutput)"
331+
DestinationFolder="$(ArtifactsBinDir)$(Configuration)\Sdks\Microsoft.NET.Sdk.StaticWebAssets\tools\$(SdkTargetFramework)\"
332+
SkipUnchangedFiles="true" />
333+
</Target>
334+
312335
<Target Name="PublishRazorSdkTools"
313336
BeforeTargets="PublishNetSdks">
314337
<MSBuild
@@ -451,6 +474,7 @@
451474
PublishMSBuildExtensions;
452475
PublishFSharp;
453476
PublishBlazorWasmTools;
477+
PublishStaticWebAssetsTools;
454478
GenerateCliRuntimeConfigurationFiles;
455479
MakeFscRunnableAndMoveToPublishDir;
456480
RemoveFscFilesAfterPublish;

0 commit comments

Comments
 (0)