C# 如何从blazor webassembly发布中删除未使用的.dll(无需手动修改blazor.boot.json等)

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完成下载所需的时间也增加了一倍,几乎无法使用 旧的:

最近,我们将旧的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的发布输出,因此我将尝试从一个新的空版本重建我的项目,以查看触发所有这些依赖项的是什么。感谢您的反馈