ASP.Net 核心排除英语以外的已发布语言目录

ASP.Net Core exclude published language directories other than english

我这样发布我的 ASP.Net Core 3.1 服务器:

dotnet publish --configuration Release --runtime win7-x64 -p:PublishTrimmed=true --output c:\MyServer

我在c:\MyServer里得到的是很多国际语言目录:cs, de, es, fr, zh-hans etc

如何只发布英文版本?

我尝试在我的 csproj 中使用 ExcludeFoldersFromDeployment

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
    <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>    
    <AspNetCoreHostingModel>inprocess</AspNetCoreHostingModel>
    <Nullable>enable</Nullable>
    <ExcludeFoldersFromDeployment>cs;de;es;fr;he;hi;it;ja;ko;nl;pl;pt;ru;tr-TR;zh-Hans;zh-Hant</ExcludeFoldersFromDeployment>
  </PropertyGroup>

但这并没有帮助

有什么帮助吗?

如果您有对 Microsoft.VisualStudio.Web.CodeGeneration.Design 的项目引用,那么您在发布的输出中会得到很多包含 CodeAnalysis.dll 文件的语言文件夹,这是脚手架控制器所需要的。如果您的项目是这样,请更改 .csproj 文件中的包引用以包含 ExcludeAssets="All":

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" ExcludeAssets="All"/>

参考https://forums.asp.net/t/2160546.aspx?how+to+get+rid+of+fr+it+ja+etc+folders+in+net+core+3+0+

编辑您的 .csproj 并将以下行添加到 PropertyGroup:

<SatelliteResourceLanguages>en</SatelliteResourceLanguages>

它应该只发布选定的语言资源文件夹。