Skip to content

LibMan installed libraries are not picked up by MapStaticAssets #799

@ffried

Description

@ffried

Describe the bug

When using .NET 9's MapStaticAssets, existing assets in wwroot are picked up and compressed during build.
However, using Microsoft.Web.LibraryManager.Build, the libraries installed via libman in wwwroot/lib are not picked up.
I've tried numerous combinations of adding a target that tries to trigger the LibraryManagerRestore target before various other targets that sound like they are looking for assets (like ResolveStaticWebAssetsInputs or ResolveProjectStaticWebAssets) but none of that seems to work.

To Reproduce

Steps to reproduce the behavior:

  1. Create a csproj that uses the ASP.NET web SDK with library manager (including Microsoft.Web.LibraryManager.Build) and restores libraries using libman into wwwroot/lib
  2. run dotnet publish --configuration release --output ./dist
  3. Check the generated static web assets file in the output (cat dist/PROJECTNAME.staticwebassets.endpoints.json)
  4. Find that it does not contain any files that were restored by libman in wwwroot/lib

Expected behavior

LibMan restored files are included in the static web assets manifest.

Additional context

Note that this is rather hard to reproduce in an IDE, since it will usually automatically restore the libman libraries.
If the wwwroot/lib folder exists BEFORE the build is started, it is also correctly picked up by the static web assets tooling.
We've hit the problem during CI builds.

dotnet --version: 9.0.305
Microsoft.Web.LibraryManager.Build: 3.0.71

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions