C# 如何从blazor webassembly发布中删除未使用的.dll(无需手动修改blazor.boot.json等)
最近,我们将旧的netstandard 2 blazor webassembly应用程序升级为net 5,但发布文件夹中的DLL数量从43(netstandard 2)增加到181(net 5)。起初我认为这是因为我添加了JSON.NET作为包依赖项。。。。但是,即使在删除并创建了一个“空”blazor webassembly之后,我注意到发布文件夹中仍然有相同的181个DLL…(几乎像是自包含的,但不是) 下载总量增加了一倍,所有这些.dll完成下载所需的时间也增加了一倍,几乎无法使用 旧的: 新的: 出版简介:C# 如何从blazor webassembly发布中删除未使用的.dll(无需手动修改blazor.boot.json等),c#,blazor,C#,Blazor,最近,我们将旧的netstandard 2 blazor webassembly应用程序升级为net 5,但发布文件夹中的DLL数量从43(netstandard 2)增加到181(net 5)。起初我认为这是因为我添加了JSON.NET作为包依赖项。。。。但是,即使在删除并创建了一个“空”blazor webassembly之后,我注意到发布文件夹中仍然有相同的181个DLL…(几乎像是自包含的,但不是) 下载总量增加了一倍,所有这些.dll完成下载所需的时间也增加了一倍,几乎无法使用 旧的:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DeleteExistingFiles>True</DeleteExistingFiles>
<PublishWithAspNetCoreTargetManifest>true</PublishWithAspNetCoreTargetManifest>
<ExcludeApp_Data>False</ExcludeApp_Data>
<LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\net5.0\browser-wasm\publish\</PublishUrl>
<PublishDir>bin\PublishOut\</PublishDir>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>net5.0</TargetFramework>
<ProjectGuid>d1f52af3-75a6-43ab-aba9-961d4460413a</ProjectGuid>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>
真的
真的
假的
假的
释放
任何CPU
真的
文件系统
bin\Release\net5.0\browser wasm\publish\
bin\PublishOut\
文件系统
net5.0
d1f52af3-75a6-43ab-aba9-961d4460413a
假的
我开始检查并手动验证每个.dll的实际使用情况,并将其从blazor.boot.json等文件中删除,但这将花费很长时间
我在其他帖子中看到了关于
true
输入到.csproj文件中
但这对我不起作用
如何将发布限制为仅包含已使用的.dll
[更新]:我刚刚创建了一个控制台应用程序,可以运行发布后操作,并从_framework文件夹和blazor.boot.json中删除所有未使用的.dll。这使得下载速度从181降到了约60个DLL,从18mb降到了6mb。但在第一次运行时,仍然需要大约25秒来完成所有下载。哎呀。必须有更好/更正确的方法来做这件事,但在我知道我做错了什么之前必须这样做:)可能就是这样:
False
那False
实际上意味着这True
:
感谢@Alamakanambra的建议。我对此寄予厚望,但我仍然将所有181.dll保存在发布文件夹中(即使是像Microsoft.VisualBasic.Core.dll这样的文件,我知道它们没有被使用)。回到手动一次删除一个,看看是否有异常!叹气..你是真的发布了还是仅仅发布了一个版本?发布后,我在客户端文件夹中看到约35个DLL。普通的WebAssembly托管应用程序。只看了你的图片:Sytem.Windows和WindowsBase.dll?“这里有点不对劲了。@HenkHolterman,这是一次发布(相对于发布版本)。。。从菜单手动发布或命令行dotnet发布获得相同的结果。我确实创建了空的blazor webassembly,现在得到了~35个DLL和大约2mb的发布输出,因此我将尝试从一个新的空版本重建我的项目,以查看触发所有这些依赖项的是什么。感谢您的反馈