Omit localized versions of assemblies from the build output

女生的网名这么多〃 提交于 2020-01-01 01:41:14

问题


In one of my projects, I am using an awesome library called Humanizer. This library comes in many language variations (I counted 38).

When I build my project, I then see all these folders like "af", "ar", "bg", "bn-BD", ..., "zh-Hant" with assemblies containing the localized resources for this library.

My issue is that my project is English-only and I have no interest in having all those localized assemblies in my build output. Is there some good way of omitting them from the build?

I am looking for general solutions to this problem. It happens with libraries other than Humanizer, like DevExpress Controls etc., which are not open-source.


回答1:


What you can do is add a target (here, I named it 'RemoveSatelliteAssemblies') to the msbuild .csproj project file, for example, at the end:

<Project...>
  ....
  <Target Name="RemoveSatelliteAssemblies" AfterTargets="ResolveAssemblyReferences">
    <ItemGroup>
        <ReferenceCopyLocalPaths Remove="@(ReferenceSatellitePaths)" />
    </ItemGroup>
  </Target>
</Project>

This target will run after the standard ResolveAssemblyReferences target (defined somewhere in a Microsoft.Common[something].targets file in the C:\Program Files (x86)\MSBuild directory or in the C:\Windows\Microsoft.Net directory - it depends on your Visual Studio / MsBuild setups and versions), and it will remove all reference satellite paths from the list of referenced paths marked as copy local (both ItemGroup names are also declared in the standard .targets file).



来源:https://stackoverflow.com/questions/30262592/omit-localized-versions-of-assemblies-from-the-build-output

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!