sass.net-5web-compiler

Blazor CSS Isolation not working and not adding scope identifiers after migrating to .NET 5.0 and using SASS


I've recently migrated a pet project from Blazor .NET 3.1 to .NET 5.0 and am trying to switch to using css isolation.

I've created a scss file (which compiles to a css file using the webcompiler extension) with the same prefix as my component:

SCSS

I've included the generated css in my index.html file:

<link href="FinNodeWASM.Client.styles.css" rel="stylesheet">

Dotnet is generating the css correctly and appending the scope identifier attribute as expected: Generated CSS

However, when I look at the generated HTML I don't see the expected score identifier attribute there:

enter image description here


Solution

  • I was having the same issue when upgrading a simple project. I compared a newly created Blazor csproj file and deleting the RuntimeIdentifier and RazorLangVersion fixed it for me.

    <Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
      <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
        *** DELETE THIS LINE *** -> <RuntimeIdentifier>browser-wasm</RuntimeIdentifier>
        *** DELETE THIS LINE *** -> <RazorLangVersion>3.0</RazorLangVersion>
      </PropertyGroup>
    
      <ItemGroup Condition="'$(TargetFramework)' == 'net5.0' ">
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.0-*" />
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.0-*" PrivateAssets="all" />
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="5.0.0-*" />
        <PackageReference Include="Microsoft.Authentication.WebAssembly.Msal" Version="5.0.0-*" />
        <PackageReference Include="System.Net.Http.Json" Version="5.0.0-*" />
      </ItemGroup>
    
    
    </Project>