在 ASP.NET Core 6 中,为啥 System.Private.ServiceModel.resources.dll 的已发布输出中需要语言文件夹以及如何消除它们?

Posted

技术标签:

【中文标题】在 ASP.NET Core 6 中,为啥 System.Private.ServiceModel.resources.dll 的已发布输出中需要语言文件夹以及如何消除它们?【英文标题】:In ASP.NET Core 6, why language folders needed in Published output for System.Private.ServiceModel.resources.dll and how to eliminate them?在 ASP.NET Core 6 中,为什么 System.Private.ServiceModel.resources.dll 的已发布输出中需要语言文件夹以及如何消除它们? 【发布时间】:2021-12-03 17:04:24 【问题描述】:

在 ASP.NET Core 6 中,当发布为独立的 win-x86 网站时,会在发布文件夹中创建一堆语言文件夹。

这些文件夹包含一个 dll,即 System.Private.ServiceModel.resources.dll。据我所知,这些文件夹在 Asp.NET 5 中不存在,它们为我不希望拥有的部署添加了混乱/噪音。

您能否解释一下为什么此类部署需要System.Private.ServiceModel.resources.dll 的所有这些本地化版本?另外,由于我的网站只有英文,我可以安全地删除所有语言文件夹(即 cs、de、es、fr、it、ja、ko、pl、pt-BR、ru、tr、zh-Hans、zh-汉特)? 最后,有没有更好的方法让这些消失?例如某处的一些配置?

【问题讨论】:

【参考方案1】:

您可以添加SatelliteResourceLanguages 来限制文件夹。

<PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>

【讨论】:

您是否知道有关此更改的文档?在 .NET 5 中,dotnet publish 命令没有创建这些文件夹。

以上是关于在 ASP.NET Core 6 中,为啥 System.Private.ServiceModel.resources.dll 的已发布输出中需要语言文件夹以及如何消除它们?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core高性能服务器HTTP.SYS

为啥要在 ASP.Net Core 中获取多个 IMemoryCache 实例?

ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解

为啥我们不再需要在更高版本的 ASP.NET Core 中手动验证模型?

为啥在 Asp.Net Core 中使用 Steeltoe.Discovery.Client 库会不断增加内存?

为啥我在 Asp.Net CORE 中使用 JWT 获得 401 未经授权?