.NET Core发布ASP.NET Web项目如何避免生成本地化文件夹?
解决.NET Core 2.0发布时生成大量本地化文件夹的问题
哦,这个问题我之前也碰到过!那些像zh-Hans、en-US这类的本地化文件夹,确实会在发布时自动冒出来,尤其是当你的项目引用了包含本地化资源的类库或NuGet包时。下面几种方法可以帮你轻松解决这个问题:
方法1:修改项目文件(.csproj)
这是最推荐的方式,配置一次后所有发布都会生效。打开你的项目文件,添加以下配置:
只保留指定语言的本地化资源
如果你还需要保留某一种语言(比如英文),可以添加:
<PropertyGroup> <!-- 这里指定要保留的语言代码,多个用分号分隔,比如"en;zh-Hans" --> <SatelliteResourceLanguages>en</SatelliteResourceLanguages> </PropertyGroup>
完全排除所有本地化资源
要是你根本不需要任何本地化文件夹,直接设为空值即可:
<PropertyGroup> <SatelliteResourceLanguages></SatelliteResourceLanguages> </PropertyGroup>
或者另一种写法,直接排除所有资源dll所在的文件夹:
<PropertyGroup> <ExcludeFoldersFromDeployment>**\*.resources.dll</ExcludeFoldersFromDeployment> </PropertyGroup>
方法2:发布命令行直接传参数
如果你不想修改项目文件,也可以在发布命令里临时指定参数:
保留指定语言
dotnet publish MySolution.sln --configuration release --output d:\test_output /p:SATELLITERESOURCELANGUAGES=en
完全排除所有本地化资源
dotnet publish MySolution.sln --configuration release --output d:\test_output /p:SATELLITERESOURCELANGUAGES=
方法3:针对特定依赖排除本地化资源
如果发现是某个特定的NuGet包或类库带来的本地化文件,可以在项目文件里针对该包设置排除规则:
<ItemGroup> <PackageReference Include="问题包名称" Version="包版本号"> <ExcludeAssets>all</ExcludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> </ItemGroup>
注意:这个方法要谨慎使用,避免排除掉包的必要功能,建议先确认清楚是哪个包生成了多余的本地化文件夹。
以上几种方法在.NET Core 2.0环境下都亲测有效,你可以根据自己的需求选择合适的方式~
内容的提问来源于stack exchange,提问作者Buda Gavril
相关产品推荐
相关产品推荐

