.NET Core构建生成本地化文件夹。

56

我有一个使用 .net core 2.0 的 web asp.net 解决方案,我正在使用以下命令进行构建:

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

但是当我检查输出文件夹时,我看到了很多本地化文件夹,就像您在下面的图片中看到的那样:

output content

有没有一种方法可以发布代码而不生成这些文件夹?


您的问题早已存在,但是同样的问题和答案在这里:https://dev59.com/oFUM5IYBdhLWcg3wa_gF - Daz
5个回答

69

对于使用ASP.NET Core 3.1的项目,请在您的*.csproj文件中添加以下行:

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

这篇文章的答案来源于:禁用编译时的Dll Culture文件夹


1
确认,该解决方案也适用于.NET Core 3.1单元测试项目。 - Jeson Martajaya
5
注意:应该将属性添加到包含“<TargetFramework>”的现有“<PropertyGroup>”节点中,而不是添加一个新的“<PropertyGroup>”,我最初尝试了添加新的“<PropertyGroup>”但注意到并没有起作用。 - Veverke

10
[in net 5.0]以上所有解决方案对我都没有用。 在绝望中,我添加了以下内容:
<PropertyGroup>   
    <SatelliteResourceLanguages>en-US;en</SatelliteResourceLanguages>
</PropertyGroup>

运转了,但我完全不知道为什么


8
@Igor.K提供的解决方案适用于我的API项目,但是对于我的解决方案中的ASP.NET Core MVC网站,我需要进行一些小修改。
尝试将下面的行添加到您的.csproj文件中。
<PropertyGroup>   
    <ResourceLanguages>en</ResourceLanguages>
</PropertyGroup>

你可以通过右键单击项目并选择“卸载项目”来编辑此文件。然后,当您再次右键单击时,您将能够编辑.csproj文件。但编辑完成后,请确保重新加载项目。
如果SatelliteResourceLanguages不能解决你的问题,那么ResourceLanguages可能行得通。

3
.csproj文件中,查找"Microsoft.VisualStudio.Web.CodeGeneration.Design"包参考,并添加属性ExcludeAssets="All"
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" ExcludeAssets="All" />

这是参考文献:禁用DLL编译时的区域文件夹

2

对我来说,既不是SateliteResourceLangauges也不是ResourceLangauges解决方案适用。在我的情况下,文件是由以下NuGet生成的:

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

像上面所示添加ExcludeAssets="All"即可解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接