从构建输出中省略本地化版本的程序集

在我的一个项目中,我正在使用一个名为Humanizer的很棒的库。 这个库有很多语言版本(我算38)。

当我构建我的项目时,然后我看到所有这些文件夹,如“af”,“ar”,“bg”,“bn-BD”,…,“zh-Hant”,其中的程序集包含此库的本地化资源。

我的问题是我的项目仅限英语,我没有兴趣在我的构建输出中拥有所有这些本地化程序集。 是否有一些从构建中省略它们的好方法?

我正在寻找这个问题的一般解决方案。 它发生在除Humanizer之外的库,如DevExpress Controls等,它们不是开源的。

你可以做的是添加一个目标(这里,我把它命名为’RemoveSatelliteAssemblies’)到msbuild .csproj项目文件,例如,在最后:

 ....       

此目标将在标准ResolveAssemblyReferences目标之后运行(在C:\Program Files (x86)\MSBuild目录或C:\Windows\Microsoft.Net目录中的Microsoft.Common[something].targets文件中的某处定义 – 它取决于您的Visual Studio / MsBuild设置和版本),它将从标记为copy local的引用路径列表中删除所有引用卫星路径(两个ItemGroup名称也在标准.targets文件中声明)。