如何配置C#项目在TargetDir的langsupport子目录生成语言资源DLL
修改C#项目本地化资源DLL的输出路径
要把本地化资源DLL从默认的$(TargetDir)\[culture-code]\路径改到$(TargetDir)\langsupport\[culture-code]\,可以通过编辑项目的.csproj文件实现,分两种场景处理:
.NET Core/.NET 5+ 项目
直接在项目文件的<PropertyGroup>节点中添加以下配置:
<PropertyGroup> <!-- 可选:指定需要生成资源DLL的语言,多个用分号分隔,不写则包含所有resx对应的语言 --> <SatelliteResourceLanguages>es;zh-CN;fr</SatelliteResourceLanguages> <!-- 设置卫星资源程序集的输出根目录 --> <SatelliteAssemblyOutputPath>$(TargetDir)langsupport\</SatelliteAssemblyOutputPath> </PropertyGroup>
配置后,编译时所有文化代码对应的资源DLL会直接生成到$(TargetDir)\langsupport\[culture-code]\路径下,无需额外移动操作。
.NET Framework 项目
如果是.NET Framework项目,可通过添加自定义MSBuild目标来移动生成后的资源DLL:
<Target Name="RelocateSatelliteAssemblies" AfterTargets="GenerateSatelliteAssemblies"> <!-- 将默认位置的资源DLL移动到langsupport目录下 --> <Move SourceFiles="@(SatelliteAssembly)" DestinationFiles="@(SatelliteAssembly->'$(TargetDir)langsupport\%(Culture)\%(Filename)%(Extension)')" OverwriteReadOnlyFiles="true" /> </Target>
这个目标会在生成卫星资源程序集完成后,自动把文件从默认目录移动到指定的langsupport路径下。
验证配置
编译项目后,打开输出目录(即$(TargetDir)对应的路径),检查langsupport子目录下是否存在对应文化代码的文件夹,以及里面的MyTool.resources.dll文件是否正确生成。
内容的提问来源于stack exchange,提问作者videoguy
相关产品推荐
相关产品推荐

