如何在VS2022编译ASP.NET MVC项目时仅保留指定组件英文资源?
解决方案:仅保留英文资源DLL
方法1:修改项目文件指定允许的语言
在项目的.csproj文件中添加以下配置,强制MSBuild仅保留英文相关的卫星资源:
<PropertyGroup> <!-- 指定仅保留英文资源,en或en-US均可 --> <SatelliteResourceLanguages>en</SatelliteResourceLanguages> </PropertyGroup>
该配置会告知编译系统仅复制指定语言的附属程序集,自动排除其他语言的资源DLL。
方法2:针对特定包精准筛选资源
如果方法1未完全生效,可针对Microsoft.SqlServer.Types和Microsoft.ReportViewer包在.csproj中添加更细致的规则:
<ItemGroup> <!-- 配置Microsoft.SqlServer.Types包资源范围 --> <PackageReference Include="Microsoft.SqlServer.Types" Version="你的版本号"> <ExcludeAssets>all</ExcludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <!-- 对Microsoft.ReportViewer包应用相同配置(若使用NuGet包形式) --> <PackageReference Include="Microsoft.ReportViewer.WebForms" Version="你的版本号"> <ExcludeAssets>all</ExcludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup>
同时添加非英文资源的移除规则:
<ItemGroup> <!-- 删除所有非英文资源文件夹及其中的DLL --> <Content Remove="**\ar\*.dll" /> <Content Remove="**\zh-Hans\*.dll" /> <Content Remove="**\fr\*.dll" /> <Content Remove="**\es\*.dll" /> <!-- 按需添加其他不需要的语言代码对应的文件夹 --> </ItemGroup>
方法3:通过VS UI调整编译设置
- 打开项目属性,进入「生成」选项卡
- 点击「高级」按钮,在弹出的「高级生成设置」窗口中找到「附属程序集语言」选项
- 输入
en或en-US后确定保存
此操作本质与方法1一致,只是通过可视化界面完成配置。
额外注意事项
- 若
Microsoft.ReportViewer是直接引用DLL而非NuGet包,需确保引用的是英文版本DLL,且将其「复制本地」属性设为True,编译后手动删除输出目录中其他语言的资源文件夹。 - 编译完成后检查输出目录(通常为
bin\Release或bin\Debug),确认仅保留en或en-US文件夹下的资源DLL。
内容的提问来源于stack exchange,提问作者Ivan Kuznietsov
相关产品推荐
相关产品推荐

