@@ -209,6 +209,8 @@ Copyright (c) .NET Foundation. All rights reserved.
209209 <_WasmBootConfigFileName Condition =" '$(_WasmBootConfigFileName)' == '' and '$(_TargetingNET100OrLater)' == 'true'" >dotnet.boot.js</_WasmBootConfigFileName >
210210 <_WasmBootConfigFileName Condition =" '$(_WasmBootConfigFileName)' == ''" >blazor.boot.json</_WasmBootConfigFileName >
211211 <_WasmPublishBootConfigFileName >publish.$(_WasmBootConfigFileName)</_WasmPublishBootConfigFileName >
212+ <_WasmPreloadAssets >$(WasmPreloadAssets)</_WasmPreloadAssets >
213+ <_WasmPreloadAssets Condition =" '$(_WasmPreloadAssets)' == ''" >true</_WasmPreloadAssets >
212214
213215 <!-- Workaround for https://github.com/dotnet/sdk/issues/12114-->
214216 <PublishDir Condition =" '$(AppendRuntimeIdentifierToOutputPath)' != 'true' AND '$(PublishDir)' == '$(OutputPath)$(RuntimeIdentifier)\$(PublishDirName)\'" >$(OutputPath)$(PublishDirName)\</PublishDir >
@@ -445,7 +447,107 @@ Copyright (c) .NET Foundation. All rights reserved.
445447 >
446448 <Output TaskParameter =" Endpoints" ItemName =" _WasmBuildBootConfigStaticWebAssetEndpoint" />
447449 </DefineStaticWebAssetEndpoints >
450+ </Target >
451+
452+ <PropertyGroup >
453+ <GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn >
454+ _AddWasmPreloadBuildProperties;
455+ $(GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn)
456+ </GenerateHtmlAssetPlaceholdersBuildStaticWebAssetsDependsOn >
457+ <GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn >
458+ _AddWasmPreloadPublishProperties;
459+ $(GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn)
460+ </GenerateHtmlAssetPlaceholdersPublishStaticWebAssetsDependsOn >
461+ </PropertyGroup >
462+
463+ <Target Name =" _WasmConfigurePreload" >
464+ <ItemGroup >
465+ <AppendPreloadRelPreloadProperty Include =" Append" >
466+ <UpdateTarget >Property</UpdateTarget >
467+ <Name >PreloadRel</Name >
468+ <Value >preload</Value >
469+ </AppendPreloadRelPreloadProperty >
470+ <AppendPreloadAsScriptProperty Include =" Append" >
471+ <UpdateTarget >Property</UpdateTarget >
472+ <Name >PreloadAs</Name >
473+ <Value >script</Value >
474+ </AppendPreloadAsScriptProperty >
475+ <AppendPreloadPriorityHighProperty Include =" Append" >
476+ <UpdateTarget >Property</UpdateTarget >
477+ <Name >PreloadPriority</Name >
478+ <Value >high</Value >
479+ </AppendPreloadPriorityHighProperty >
480+ <AppendPreloadCrossoriginAnonymousProperty Include =" Append" >
481+ <UpdateTarget >Property</UpdateTarget >
482+ <Name >PreloadCrossorigin</Name >
483+ <Value >anonymous</Value >
484+ </AppendPreloadCrossoriginAnonymousProperty >
485+ <AppendPreloadOrder1Property Include =" Append" >
486+ <UpdateTarget >Property</UpdateTarget >
487+ <Name >PreloadOrder</Name >
488+ <Value >1</Value >
489+ </AppendPreloadOrder1Property >
490+ <AppendGroupWebAssemblyProperty Include =" Append" >
491+ <UpdateTarget >Property</UpdateTarget >
492+ <Name >PreloadGroup</Name >
493+ <Value >webassembly</Value >
494+ </AppendGroupWebAssemblyProperty >
495+
496+ <!-- Label=Include matches endpoints with fingerprint; Label=Exclude matches endpoints without fingerprint -->
497+ <_WasmPreloadEndpointFilter Include =" Property" Name =" Label" Mode =" Include" Condition =" '$(_WasmFingerprintAssets)' == 'true' and ('$(StaticWebAssetProjectMode)' == 'Default' or '$(_WasmFingerprintDotnetJs)' == 'true')" />
498+ <_WasmPreloadEndpointFilter Include =" Property" Name =" Label" Mode =" Exclude" Condition =" '@(_WasmPreloadEndpointFilter)' == ''" />
499+ </ItemGroup >
500+ </Target >
501+
502+ <Target Name =" _AddWasmPreloadBuildProperties" DependsOnTargets =" _WasmConfigurePreload;_AddWasmStaticWebAssets" BeforeTargets =" GenerateStaticWebAssetsManifest" Condition =" '$(_WasmPreloadAssets)' == 'true'" >
503+ <ItemGroup >
504+ <_WasmPreloadBuildScriptAsset Include =" @(StaticWebAsset)" Condition =" '%(AssetKind)' != 'Publish' and '%(FileName)%(Extension)' == '$(_WasmBootConfigFileName)'" />
505+ </ItemGroup >
506+
507+ <FilterStaticWebAssetEndpoints
508+ Endpoints =" @(StaticWebAssetEndpoint)"
509+ Assets =" @(_WasmPreloadBuildScriptAsset)"
510+ Filters =" @(_WasmPreloadEndpointFilter)"
511+ >
512+ <Output TaskParameter =" FilteredEndpoints" ItemName =" _WasmPreloadBuildScriptAssetEndpoint" />
513+ </FilterStaticWebAssetEndpoints >
448514
515+ <UpdateStaticWebAssetEndpoints
516+ EndpointsToUpdate =" @(_WasmPreloadBuildScriptAssetEndpoint)"
517+ AllEndpoints =" @(_WasmPreloadBuildScriptAssetEndpoint)"
518+ Operations =" @(AppendPreloadRelPreloadProperty);@(AppendPreloadAsScriptProperty);@(AppendPreloadPriorityHighProperty);@(AppendPreloadCrossoriginAnonymousProperty);@(AppendPreloadOrder1Property);@(AppendGroupWebAssemblyProperty)"
519+ >
520+ <Output TaskParameter =" UpdatedEndpoints" ItemName =" _UpdatedWasmPreloadBuildAssetEndpoint" />
521+ </UpdateStaticWebAssetEndpoints >
522+ <ItemGroup >
523+ <StaticWebAssetEndpoint Remove =" @(_WasmPreloadBuildScriptAssetEndpoint)" />
524+ <StaticWebAssetEndpoint Include =" @(_UpdatedWasmPreloadBuildAssetEndpoint)" />
525+ </ItemGroup >
526+ </Target >
527+ <Target Name =" _AddWasmPreloadPublishProperties" DependsOnTargets =" _WasmConfigurePreload;_AddPublishWasmBootJsonToStaticWebAssets" BeforeTargets =" GenerateStaticWebAssetsPublishManifest" Condition =" '$(_WasmPreloadAssets)' == 'true'" >
528+ <ItemGroup >
529+ <_WasmPreloadPublishScriptAsset Include =" @(StaticWebAsset)" Condition =" '%(AssetKind)' != 'Build' and '%(FileName)%(Extension)' == '$(_WasmPublishBootConfigFileName)'" />
530+ </ItemGroup >
531+
532+ <FilterStaticWebAssetEndpoints
533+ Endpoints =" @(StaticWebAssetEndpoint)"
534+ Assets =" @(_WasmPreloadPublishScriptAsset)"
535+ Filters =" @(_WasmPreloadEndpointFilter)"
536+ >
537+ <Output TaskParameter =" FilteredEndpoints" ItemName =" _WasmPreloadPublishScriptAssetEndpoint" />
538+ </FilterStaticWebAssetEndpoints >
539+
540+ <UpdateStaticWebAssetEndpoints
541+ EndpointsToUpdate =" @(_WasmPreloadPublishScriptAssetEndpoint)"
542+ AllEndpoints =" @(_WasmPreloadPublishScriptAssetEndpoint)"
543+ Operations =" @(AppendPreloadRelPreloadProperty);@(AppendPreloadAsScriptProperty);@(AppendPreloadPriorityHighProperty);@(AppendPreloadCrossoriginAnonymousProperty);@(AppendPreloadOrder1Property);@(AppendGroupWebAssemblyProperty)"
544+ >
545+ <Output TaskParameter =" UpdatedEndpoints" ItemName =" _UpdatedWasmPreloadPublishAssetEndpoint" />
546+ </UpdateStaticWebAssetEndpoints >
547+ <ItemGroup >
548+ <StaticWebAssetEndpoint Remove =" @(_WasmPreloadPublishScriptAssetEndpoint)" />
549+ <StaticWebAssetEndpoint Include =" @(_UpdatedWasmPreloadPublishAssetEndpoint)" />
550+ </ItemGroup >
449551 </Target >
450552
451553 <Target Name =" ProvideDefaultUserRuntimeConfig" BeforeTargets =" _GenerateRuntimeConfigurationFilesInputCache" Condition =" '$(GenerateRuntimeConfigurationFiles)' == 'true'" >
0 commit comments