不需要的文化特定 dll 复制到 bin 目录

unwanted culture specific dlls copied to bin directory

我正在使用 visual studio 2013 & Fluent Validation 5.6.2

我看到在 bin 文件夹中构建后它复制了所有文化特定 FluentValidation.resources.dll 似乎在 .nuspec 文件

中提到了它
> <file src="lib\NET35\de\FluentValidation.resources.dll"
> target="lib\NET35\de\FluentValidation.resources.dll" />
>     <file src="lib\NET35\es\FluentValidation.resources.dll" target="lib\NET35\es\FluentValidation.resources.dll" />
>     <file src="lib\NET35\fr\FluentValidation.resources.dll" target="lib\NET35\fr\FluentValidation.resources.dll" />
>     <file src="lib\NET35\it\FluentValidation.resources.dll" target="lib\NET35\it\FluentValidation.resources.dll" />
>     <file src="lib\NET35\nl\FluentValidation.resources.dll" target="lib\NET35\nl\FluentValidation.resources.dll" />
>     <file src="lib\NET35\pt\FluentValidation.resources.dll" target="lib\NET35\pt\FluentValidation.resources.dll" />
>     <file src="lib\NET35\sv\FluentValidation.resources.dll" target="lib\NET35\sv\FluentValidation.resources.dll" />

但我不需要 bin 文件夹中的这些,因为项目不支持任何特定于文化的消息。

那么我如何告诉 vs-build 忽略这些特定于文化的 dll?

我的解决方案是在 .csproj 文件末尾 project 结束标记之前添加此目标。

<Target Name="AfterPackage" AfterTargets="CopyAllFilesToSingleFolderForPackage" />

<ItemGroup>
    <FluentValidationExcludedCultures Include="cs;da;de;es;fa;fi;fr;it;ko;mk;nl;pl;pt;ru;sv;tr;zh-CN">
        <InProject>false</InProject>
    </FluentValidationExcludedCultures>
</ItemGroup>

<Target Name="RemoveTranslationsAfterBuild" AfterTargets="AfterBuild">
    <RemoveDir Directories="@(FluentValidationExcludedCultures->'$(OutputPath)%(Filename)')" />
</Target>

<Target Name="RemoveTranslationsAfterPackage" AfterTargets="AfterPackage">
    <RemoveDir Directories="@(FluentValidationExcludedCultures->'$(_PackageTempDir)$(OutputPath)%(Filename)')" />
</Target>

它不漂亮,但它完成了工作。如果您需要一些特定于文化的资源,只需从列表中删除相应的行即可。如果将来的更新添加了您不想要的新文化,请将其添加到列表中。

最好的选择是要求开发人员将资源分成多个 nuget,这样您就可以只添加需要的资源。我会暂时坚持这个解决方案,直到有人想出更好的解决方案。


现在您可以在官方项目 wiki 上找到我的解决方案:https://github.com/JeremySkinner/FluentValidation/wiki/f.-Localization(在页面底部)

我对外部库有同样的问题,我在 Visual Studio 项目属性中添加 post-build 脚本,删除 所有文件夹 (对于我没关系,否则在输出目录设置目录列表:

FOR /D %%d IN ($(TargetDir)*) DO RMDIR /S /Q %%d