Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Blazor] libman libraries not included in first build

未关闭
#680 6 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
38/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
csharp
领域
build-system

调研方向

Start with the referenced Microsoft.NET.Sdk.Publish.ComputeFiles.targets target and compare it with the Blazor MAUI build using the provided binlogs. Reproduce with the csproj, libman.json, and index.html steps, then verify that a clean first build includes the generated library files without requiring a second build.

由索引模型根据 Issue 内容生成。

描述


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
  1. New Blazor Maui App
  2. Add <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.161" PrivateAssets="all" /> to the csproj
  3. 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"
    }
  ]
}
  1. Update index.html and reference <link rel="stylesheet" href="libs/bootstrap/css/bootstrap.min.css" /> instead.
  2. Remove the wwwroot/libs folder and do a new build / run. This will add the libs folder back but the app does include the CSS file. If you run the app again without removing the wwwroot/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

主要语言
C#
星标
486
派生
91
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

aspnet/LibraryManager 的其他 Issue

查看 aspnet/LibraryManager 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。