gpt4 book ai didi

c# - Blazor WebAssembly 中提供了不必要的 dll

转载 作者:行者123 更新时间:2023-12-04 03:55:59 24 4
gpt4 key购买 nike

我正在尝试使用由 ASP.NET Core 托管的 Blazor WebAssembly。在实现一个页面后,我在 Chrome DevTools 中看到许多不必要的 dll 被传输到客户端。
有一个情况的例子。假设我们在解决方案中有以下项目结构:

BlazorApp.Client (contains Blazor pages)
Reference to BlazorApp.Shared
BlazorApp.Server (contains ASP.NET core)
Reference to BlazorApp.Client
Reference to BlazorApp.Shared
BlazorApp.Shared (contains shared classes)
Reference to ClassLibrary
ClassLibrary (contains some more shared classes)
NuGet reference to AWSSDK.Core
MyEnum.cs (enum, which is used in Blazor page; not using AWS SDK)
所以基本上 BlazorApp.Shared 项目引用了一些其他项目,这些项目可能有很多 nuget 包。 repo https://github.com/GTmAster/blazor-treeshake 中提供了重现问题的最低代码
我的假设是 Mono Linker 在 Release 构建中做了一个树摇动,所以所有未使用的代码和库都将从生成的 Web 程序集中排除。
但是当我运行我的应用程序时,我看到它从服务器加载了 AWSSDK.Core.dll:
DevTools BlazorApp.Client 中的代码没有使用它, BlazorApp.ServerBlazorApp.Shared 中的代码也没有使用它。它仅被加载,因为它在 ClassLibrary 中被引用。
我对 Mono Linker 树抖动有什么误解吗?
排除此 dll 的唯一方法是将 MyEnum 移动到 BlazorApp.Shared 并破坏 BlazorApp.Shared -> ClassLibrary 引用吗?

最佳答案

你是对的,单声道链接器正在摇树。
我能找到的唯一相关信息在这里:https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-preview-2-release-now-available/

You may notice with this preview release that the download size of the app during development is now a bit larger, but build times are faster. This is because we no longer run the .NET IL linker during development to remove unused code. In previous Blazor previews we ran the linker on every build, which slowed down development.


所以正如它所说:

Now we only run the linker for release builds, which are typically done as part of publishing the app.


您是否正在研究发布版本?
如果您想在调试版本中进行摇树,请尝试遵循此建议。

If you prefer to still run the .NET IL linker on each build during development, you can turn it on by adding <BlazorWebAssemblyEnableLinking>true</BlazorWebAssemblyEnableLinking> to your project file.

关于c# - Blazor WebAssembly 中提供了不必要的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63905843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com