在我的一个项目中,我使用了一个很棒的库Humanizer,这个库有很多语言变体(我数了38种)。当我构建我的项目时,我会看到所有这些文件夹,如“af”、“ar”、“bg”、“bn-BD”、......、“zh-Hant”,其中的程序集包含了这个库的本地化资源。我的问题是我的项目是纯英语的,我对在我的构建输出中包含所有这些本地化的程序集不感兴趣。有什么好的方法可以从构建中省略它们吗?我正在寻找这个问题的通用解决方案。它发生在库以外的人性化,如DevExpress控件等,这是不是开源。
q0qdq0h21#
您可以做的是向msbuild .csproj项目文件添加一个目标(这里,我将其命名为'RemoveSatelliteAssemblies'),例如,在末尾:
<Project...> .... <Target Name="RemoveSatelliteAssemblies" AfterTargets="ResolveAssemblyReferences"> <ItemGroup> <ReferenceCopyLocalPaths Remove="@(ReferenceSatellitePaths)" /> </ItemGroup> </Target> </Project>
此目标将在标准ResolveAssemblyReferences目标之后运行(定义在C:\Program Files (x86)\MSBuild目录或C:\Windows\Microsoft.Net目录中的Microsoft.Common[something].targets文件中的某个位置-这取决于您的Visual Studio / MsBuild设置和版本),并且它将从标记为本地复制的参考路径列表中移除所有参考卫星路径(两个ItemGroup名称也在标准.targets文件中声明)。
ResolveAssemblyReferences
C:\Program Files (x86)\MSBuild
C:\Windows\Microsoft.Net
Microsoft.Common[something].targets
y1aodyip2#
使用最新的msbuild,您可以简单地将其放入.csproj文件中:
<PropertyGroup> <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages> </PropertyGroup>
请参见dotnet/sdk/issues/774
2条答案
按热度按时间q0qdq0h21#
您可以做的是向msbuild .csproj项目文件添加一个目标(这里,我将其命名为'RemoveSatelliteAssemblies'),例如,在末尾:
此目标将在标准
ResolveAssemblyReferences
目标之后运行(定义在C:\Program Files (x86)\MSBuild
目录或C:\Windows\Microsoft.Net
目录中的Microsoft.Common[something].targets
文件中的某个位置-这取决于您的Visual Studio / MsBuild设置和版本),并且它将从标记为本地复制的参考路径列表中移除所有参考卫星路径(两个ItemGroup名称也在标准.targets文件中声明)。y1aodyip2#
使用最新的msbuild,您可以简单地将其放入.csproj文件中:
请参见dotnet/sdk/issues/774