Browse Source

Property support StaticWebAssets SDK when it's available

pull/14225/head
Max Katz 2 years ago
parent
commit
07f5eda4ae
  1. 1
      .gitignore
  2. 4
      samples/ControlCatalog.Browser.Blazor/ControlCatalog.Browser.Blazor.csproj
  3. 5
      samples/ControlCatalog.Browser/ControlCatalog.Browser.csproj
  4. 4
      samples/MobileSandbox.Browser/MobileSandbox.Browser.csproj
  5. 21
      src/Browser/Avalonia.Browser.Blazor/Avalonia.Browser.Blazor.csproj
  6. 3
      src/Browser/Avalonia.Browser.Blazor/BlazorSingleViewLifetime.cs
  7. 16
      src/Browser/Avalonia.Browser/Avalonia.Browser.csproj
  8. 10
      src/Browser/Avalonia.Browser/Avalonia.Browser.props
  9. 15
      src/Browser/Avalonia.Browser/build/Avalonia.Browser.props
  10. 7
      src/Browser/Avalonia.Browser/build/Avalonia.Browser.targets
  11. 22
      src/Browser/Avalonia.Browser/build/Microsoft.AspNetCore.StaticWebAssets.props
  12. 0
      src/Browser/Avalonia.Browser/build/interop.js
  13. 2
      src/Browser/Avalonia.Browser/webapp/build.js

1
.gitignore

@ -218,3 +218,4 @@ src/Browser/Avalonia.Browser.Blazor/webapp/package-lock.json
src/Browser/Avalonia.Browser.Blazor/wwwroot
src/Browser/Avalonia.Browser/wwwroot
api/diff
src/Browser/Avalonia.Browser/staticwebassets

4
samples/ControlCatalog.Browser.Blazor/ControlCatalog.Browser.Blazor.csproj

@ -22,8 +22,8 @@
<Import Project="..\..\build\ReferenceCoreLibraries.props" />
<Import Project="..\..\build\BuildTargets.targets" />
<Import Project="..\..\src\Browser\Avalonia.Browser\Avalonia.Browser.props" />
<Import Project="..\..\src\Browser\Avalonia.Browser\Avalonia.Browser.targets" />
<Import Project="..\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.props" />
<Import Project="..\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.targets" />
</Project>

5
samples/ControlCatalog.Browser/ControlCatalog.Browser.csproj

@ -1,6 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../src/Browser/Avalonia.Browser/Avalonia.Browser.props" />
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<RuntimeIdentifier>browser-wasm</RuntimeIdentifier>
@ -20,5 +18,6 @@
<WasmExtraFilesToDeploy Include="AppBundle/**" />
</ItemGroup>
<Import Project="../../src/Browser/Avalonia.Browser/Avalonia.Browser.targets" />
<Import Project="../../src/Browser/Avalonia.Browser/build/Avalonia.Browser.props" />
<Import Project="../../src/Browser/Avalonia.Browser/build/Avalonia.Browser.targets" />
</Project>

4
samples/MobileSandbox.Browser/MobileSandbox.Browser.csproj

@ -38,6 +38,6 @@
<WasmExtraFilesToDeploy Include="app.css" />
</ItemGroup>
<Import Project="..\..\src\Browser\Avalonia.Browser\Avalonia.Browser.props" />
<Import Project="..\..\src\Browser\Avalonia.Browser\Avalonia.Browser.targets" />
<Import Project="..\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.props" />
<Import Project="..\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.targets" />
</Project>

21
src/Browser/Avalonia.Browser.Blazor/Avalonia.Browser.Blazor.csproj

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ResolveStaticWebAssetsInputsDependsOn>_IncludeGeneratedAvaloniaStaticFiles;$(ResolveStaticWebAssetsInputsDependsOn)</ResolveStaticWebAssetsInputsDependsOn>
</PropertyGroup>
<ItemGroup>
@ -20,22 +19,4 @@
<ItemGroup>
<ProjectReference Include="../Avalonia.Browser/Avalonia.Browser.csproj" />
</ItemGroup>
<Target Name="_IncludeGeneratedAvaloniaStaticFiles">
<ItemGroup>
<_AvaloniaWebAssets Include="$(MSBuildThisFileDirectory)../Avalonia.Browser/wwwroot/**/*.*" />
</ItemGroup>
<DefineStaticWebAssets SourceId="$(PackageId)"
SourceType="Computed"
AssetKind="All"
AssetRole="Primary"
CopyToOutputDirectory="PreserveNewest"
CopyToPublishDirectory="PreserveNewest"
ContentRoot="$(MSBuildThisFileDirectory)../Avalonia.Browser/wwwroot/"
BasePath="_content/$(PackageId)"
CandidateAssets="@(_AvaloniaWebAssets)"
RelativePathFilter="**.js">
<Output TaskParameter="Assets" ItemName="StaticWebAsset" />
</DefineStaticWebAssets>
</Target>
</Project>

3
src/Browser/Avalonia.Browser.Blazor/BlazorSingleViewLifetime.cs

@ -17,9 +17,6 @@ public static class BlazorAppBuilder
/// <param name="options">Browser backend specific options.</param>
public static async Task StartBlazorAppAsync(this AppBuilder builder, BrowserPlatformOptions? options = null)
{
options ??= new BrowserPlatformOptions();
options.FrameworkAssetPathResolver ??= filePath => $"/_content/Avalonia.Browser.Blazor/{filePath}";
builder = await BrowserAppBuilder.PreSetupBrowser(builder, options);
builder.SetupWithLifetime(new BlazorSingleViewLifetime());

16
src/Browser/Avalonia.Browser/Avalonia.Browser.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
@ -22,21 +21,26 @@
</ItemGroup>
<ItemGroup>
<Content Include="*.props">
<!-- See https://github.com/dotnet/sdk/blob/9d4d2c4ca35b0856af7df63d6a38b3259aa6917c/src/StaticWebAssetsSdk/Targets/Microsoft.NET.Sdk.StaticWebAssets.Pack.targets#L64-L66 -->
<Content Include="build\Microsoft.AspNetCore.StaticWebAssets.props">
<Pack>true</Pack>
<PackagePath>build/</PackagePath>
</Content>
<Content Include="*.targets">
<Content Include="build\Avalonia.Browser.props">
<Pack>true</Pack>
<PackagePath>build/;buildTransitive/;buildMultiTargeting/</PackagePath>
</Content>
<Content Include="build\Avalonia.Browser.targets">
<Pack>true</Pack>
<PackagePath>build/;buildTransitive/</PackagePath>
</Content>
<Content Include="interop.js">
<Content Include="build\interop.js">
<Pack>true</Pack>
<PackagePath>build/interop.js;buildTransitive/interop.js</PackagePath>
</Content>
<Content Include="wwwroot/**/*.*">
<Content Include="staticwebassets/**/*.*">
<Pack>true</Pack>
<PackagePath>build/wwwroot;buildTransitive/wwwroot</PackagePath>
<PackagePath>staticwebassets/</PackagePath>
</Content>
</ItemGroup>

10
src/Browser/Avalonia.Browser/Avalonia.Browser.props

@ -1,10 +0,0 @@
<Project>
<PropertyGroup>
<ShouldIncludeAvaloniaJavaScript Condition=" '$(ShouldIncludeAvaloniaJavaScript)' == '' ">True</ShouldIncludeAvaloniaJavaScript>
<ShouldIncludeNativeSkiaSharp Condition=" '$(ShouldIncludeNativeSkiaSharp)' == '' ">True</ShouldIncludeNativeSkiaSharp>
<ShouldIncludeNativeHarfBuzzSharp Condition=" '$(ShouldIncludeNativeHarfBuzzSharp)' == '' ">True</ShouldIncludeNativeHarfBuzzSharp>
<!-- .NET 8 changes default location for dotnet script to the "_framework" subfolder, -->
<!-- But this change would introduce a breaking change to Avalonia users, so we revert it back to the .NET 7 state. -->
<WasmRuntimeAssetsLocation Condition="'$(WasmRuntimeAssetsLocation)' == ''">./</WasmRuntimeAssetsLocation>
</PropertyGroup>
</Project>

15
src/Browser/Avalonia.Browser/build/Avalonia.Browser.props

@ -0,0 +1,15 @@
<Project>
<PropertyGroup>
<ShouldIncludeAvaloniaAssets Condition=" '$(ShouldIncludeAvaloniaAssets)' == '' ">True</ShouldIncludeAvaloniaAssets>
<ShouldIncludeAvaloniaLegacyAssets Condition=" '$(ShouldIncludeAvaloniaLegacyAssets)' == '' AND '$(ShouldIncludeAvaloniaAssets)' == 'True' AND '$(StaticWebAssetsEnabled)' != 'True'">True</ShouldIncludeAvaloniaLegacyAssets>
<ShouldIncludeAvaloniaStaticAsset Condition=" '$(ShouldIncludeAvaloniaStaticAsset)' == '' AND '$(ShouldIncludeAvaloniaAssets)' == 'True' AND '$(StaticWebAssetsEnabled)' == 'True'">True</ShouldIncludeAvaloniaStaticAsset>
<ShouldIncludeNativeSkiaSharp Condition=" '$(ShouldIncludeNativeSkiaSharp)' == '' ">True</ShouldIncludeNativeSkiaSharp>
<ShouldIncludeNativeHarfBuzzSharp Condition=" '$(ShouldIncludeNativeHarfBuzzSharp)' == '' ">True</ShouldIncludeNativeHarfBuzzSharp>
<!-- .NET 8 changes default location for dotnet script to the "_framework" subfolder, -->
<!-- But this change would introduce a breaking change to Avalonia users, so we revert it back to the .NET 7 state. -->
<WasmRuntimeAssetsLocation Condition="'$(WasmRuntimeAssetsLocation)' == ''">./</WasmRuntimeAssetsLocation>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)/../build/Microsoft.AspNetCore.StaticWebAssets.props" />
</Project>

7
src/Browser/Avalonia.Browser/Avalonia.Browser.targets → src/Browser/Avalonia.Browser/build/Avalonia.Browser.targets

@ -4,9 +4,10 @@
<EmccFlags>$(EmccExtraLDFlags) -sERROR_ON_UNDEFINED_SYMBOLS=0</EmccFlags>
</PropertyGroup>
<ItemGroup>
<WasmExtraFilesToDeploy Condition="'$(WasmRuntimeAssetsLocation)' == ''" Include="$(MSBuildThisFileDirectory)/wwwroot/**/*.*" />
<WasmExtraFilesToDeploy Condition="'$(WasmRuntimeAssetsLocation)' != ''" Include="$(MSBuildThisFileDirectory)/wwwroot/**/*.*" TargetPath="$(WasmRuntimeAssetsLocation)/%(FileName)%(Extension)" />
<!-- Fallback for applications without StaticWebAssetsEnabled (legacy WASM SDK) -->
<ItemGroup Condition="'$(ShouldIncludeAvaloniaLegacyAssets)' == 'True'">
<WasmExtraFilesToDeploy Condition="'$(WasmRuntimeAssetsLocation)' == ''" Include="$(MSBuildThisFileDirectory)/../staticwebassets/**/*.*" />
<WasmExtraFilesToDeploy Condition="'$(WasmRuntimeAssetsLocation)' != ''" Include="$(MSBuildThisFileDirectory)/../staticwebassets/**/*.*" TargetPath="$(WasmRuntimeAssetsLocation)/%(FileName)%(Extension)" />
</ItemGroup>
<PropertyGroup Condition="'$(ShouldIncludeNativeSkiaSharp)' == 'True' or '$(ShouldIncludeNativeHarfBuzzSharp)' == 'True'">

22
src/Browser/Avalonia.Browser/build/Microsoft.AspNetCore.StaticWebAssets.props

@ -0,0 +1,22 @@
<Project>
<PropertyGroup>
<_AvaloniaWebAssetsFolder>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)../staticwebassets/))</_AvaloniaWebAssetsFolder>
</PropertyGroup>
<ItemGroup Condition="'$(ShouldIncludeAvaloniaStaticAsset)' == 'True'">
<!-- This file repricates how StaticWebAsset SDK generates static web assets for Blazor nuget packages, which we don't use here. -->
<_AvaloniaWebAssets Include="$(_AvaloniaWebAssetsFolder)**/*.*" />
<StaticWebAsset Include="@(_AvaloniaWebAssets)">
<SourceType>Package</SourceType>
<SourceId>Avalonia.Browser</SourceId>
<ContentRoot>$(_AvaloniaWebAssetsFolder)</ContentRoot>
<BasePath>/</BasePath>
<RelativePath>$(WasmRuntimeAssetsLocation)/%(FileName)%(Extension)</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$(_AvaloniaWebAssetsFolder)%(FileName)%(Extension)</OriginalItemSpec>
</StaticWebAsset>
</ItemGroup>
</Project>

0
src/Browser/Avalonia.Browser/interop.js → src/Browser/Avalonia.Browser/build/interop.js

2
src/Browser/Avalonia.Browser/webapp/build.js

@ -4,7 +4,7 @@ require("esbuild").build({
"./modules/storage.ts",
"./modules/sw.ts"
],
outdir: "../wwwroot",
outdir: "../staticwebassets",
bundle: true,
minify: true,
format: "esm",

Loading…
Cancel
Save