如何在无AssemblyInfo.cs的ASP.NET Core项目中添加RootNamespace属性修复本地化问题
解决方法
你之前的配置不生效是因为使用了AssemblyMetadata节点,它生成的是System.Reflection.AssemblyMetadataAttribute元数据特性,不是ASP.NET Core本地化组件需要的Microsoft.Extensions.Localization命名空间下的对应特性,所以无法被识别。你可以选择以下任意一种方案配置:
方案1:直接在csproj中配置(无需新增代码文件)
通过AssemblyAttribute节点让自动生成的AssemblyInfo包含所需特性,在你的WebApi.csproj中添加如下配置:
<ItemGroup> <AssemblyAttribute Include="Microsoft.Extensions.Localization.ResourceLocationAttribute"> <!-- 替换为实际的资源文件夹名称 --> <_Parameter1>Resources</_Parameter1> </AssemblyAttribute> <AssemblyAttribute Include="Microsoft.Extensions.Localization.RootNamespaceAttribute"> <!-- 替换为实际的项目根命名空间 --> <_Parameter1>Cmp.WebApi</_Parameter1> </AssemblyAttribute> </ItemGroup>
保存后重新生成项目,自动生成的AssemblyInfo就会包含官方要求的两个程序集特性,本地化功能即可正常工作。
方案2:手动添加特性代码文件
你可以在项目中任意位置新增一个.cs文件(无需命名为AssemblyInfo.cs),直接写入官方要求的特性代码即可:
using Microsoft.Extensions.Localization; [assembly: ResourceLocation("Resources")] [assembly: RootNamespace("Cmp.WebApi")]
.NET 5+ 并不会禁止手动添加程序集特性,手动添加的特性会和自动生成的AssemblyInfo内容合并生效,不会产生冲突。
内容的提问来源于stack exchange,提问作者sommmen
相关产品推荐
相关产品推荐

