.net 核心构建生成本地化文件夹

.net core build produces localization folders

我有一个使用 .net core 2.0 的网络 asp.net 解决方案。我正在使用以下命令构建它:

dotnet publish MySolution.sln --configuration release --output d:\test_output

但是当我检查输出文件夹时,我看到了很多本地化文件夹,如下图所示:

有没有办法在不生成这些文件夹的情况下发布代码?

.csproj 文件中,您查找 "Microsoft.VisualStudio.Web.CodeGeneration.Design" 包引用并添加 属性 排除资产="All"

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

引用如下:Disable Dll Culture Folders on Compile

对于使用 ASP.NET Core 3.1 的项目,将此行添加到您的 *.csproj 文件中:

<PropertyGroup>   
    <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>

此post中的答案来源:Disable Dll Culture Folders on Compile

@Igor.K提供的解决方案适用于我的API项目,但对于我解决方案中的ASP.NET核心MVC网站,我不得不做一个小改动。

尝试将以下行添加到您的 .csproj 文件中。

<PropertyGroup>   
    <ResourceLanguages>en</ResourceLanguages>
</PropertyGroup>

您可以通过 right-clicking 您的项目并选择“卸载项目”来编辑此文件。然后,当您再次 right-click 时,您将能够编辑 .csproj 文件。不过,请确保在完成后重新加载项目。

因此,如果 SatelliteResourceLanguages 不能解决您的问题,ResourceLanguages 可能会成功。

SateliteResourceLangaugesResourceLangauges 解决方案都不适合我。在我的例子中,文件是由以下 nuget 生成的:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" ExcludeAssets="All" />

如上所示添加 ExcludeAssets="All" 解决了问题。

[在 net 5.0 中] 以上所有解决方案都不适合我。 出于绝望,我补充说:

<PropertyGroup>   
    <SatelliteResourceLanguages>en-US;en</SatelliteResourceLanguages>
</PropertyGroup>

有效,完全不知道为什么