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

Bud*_*ril 9 publishing .net-core

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

dotnet publish MySolution.sln --configuration release --output d:\test_output
Run Code Online (Sandbox Code Playgroud)

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

输出内容

有没有一种方法可以在不生成这些文件夹的情况下发布代码?

小智 38

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

<PropertyGroup>   
    <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这篇文章中的答案来源:Disable Dll Culture Folders on Compile

  • 备注:该属性应添加到包含“&lt;TargetFramework&gt;”的现有“&lt;PropertyGroup&gt;”节点内,而不是添加新的“&lt;PropertyGroup&gt;”,我首先尝试了该属性,但发现它不起作用。 (5认同)

小智 10

[在net 5.0中]上述所有解决方案对我来说都不起作用。出于绝望,我补充道:

<PropertyGroup>   
    <SatelliteResourceLanguages>en-US;en</SatelliteResourceLanguages>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

成功了,完全不知道为什么


swr*_*ngs 8

@Igor.K 提供的解决方案适用于我的 API 项目,但对于我的解决方案中的 ASP.NET Core MVC 网站,我必须进行一些小的更改。

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

<PropertyGroup>   
    <ResourceLanguages>en</ResourceLanguages>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

您可以通过右键单击您的项目并选择“卸载项目”来编辑此文件。然后,当您再次右键单击时,您将能够编辑 .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" />
Run Code Online (Sandbox Code Playgroud)

这是参考:编译时禁用 Dll 文化文件夹