Description
Issue moved from dotnet/maui#6709
- Please respond to @campersau.
From @campersau on Saturday, April 30, 2022 6:31:24 PM
Description
Adding some client javascript libraries via libman does not include them in the first build.
When comparing the binlog with a blazor wasm build I can see that there is a _IncludePrePublishGeneratedContent
target which is not present in the blazor maui build and thus any files which are generated under the wwwroot
folder during the build are missing.
Here are the binlogs:
blazorbinlogs.zip
I only tested windows.
Steps to Reproduce
- New Blazor Maui App
- Add
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.161" PrivateAssets="all" />
to thecsproj
- Add
libman.json
with the following content:
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "[email protected]",
"files": [
"css/bootstrap.min.css"
],
"destination": "wwwroot/libs/bootstrap"
}
]
}
- Update
index.html
and reference<link rel="stylesheet" href="libs/bootstrap/css/bootstrap.min.css" />
instead. - Remove the
wwwroot/libs
folder and do a new build / run. This will add thelibs
folder back but the app does include the CSS file. If you run the app again without removing thewwwroot/libs
folder the CSS is included correctly.
It would be great if the libman library files were included directly in the first build.
Alternatively you can clone https://github.com/campersau/blazor-maui-libmanbug
and do step 5.
Version with bug
Release Candidate 2 (current)
Last version that worked well
Unknown/Other
Affected platforms
Windows
Affected platform versions
net6.0-windows10.0.19041.0
Did you find any workaround?
Building the project a second time works correctly as the libraries are already restored.
Or copy the msbuild target from https://github.com/dotnet/sdk/blob/c53c8ac81e1bcb8118c31bc4f5622396c72e9959/src/WebSdk/Publish/Targets/ComputeTargets/Microsoft.NET.Sdk.Publish.ComputeFiles.targets#L48-L60 into the csproj
.
<Target Name="_IncludePrePublishGeneratedContent" BeforeTargets="GetCopyToPublishDirectoryItems" Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultContentItems)' == 'true' ">
<ItemGroup>
<!-- First, clean up previously generated content that may have been removed. -->
<ContentWithTargetPath Remove="@(ContentWithTargetPath)" Condition="!Exists('%(Identity)')" />
<!-- Next, include any newly generated content. -->
<_WebProjectGeneratedContent Include="wwwroot\**" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(_ContentIncludedByDefault)" />
<ContentWithTargetPath Include="@(_WebProjectGeneratedContent)" TargetPath="%(Identity)" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
</Target>
Relevant log output
No response