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

时间:2015-07-08 09:47:10

标签: c# .net visual-studio fluentvalidation

我正在使用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文件夹中不需要这些,因为project不支持任何特定于文化的消息。

那么我怎么能告诉vs-build忽略这些特定文化的dll?

2 个答案:

答案 0 :(得分:18)

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

<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>

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

最好的选择是让开发人员将多个nugets中的资源分开,这样你就可以添加所需的资源。我现在坚持使用这个解决方案,直到有人想出一个更好的解决方案。

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

答案 1 :(得分:0)

我对外部库有同样的问题,我在Visual Studio项目属性中添加了后期构建脚本,删除所有文件夹(对我来说没关系,否则设置目录列表)在输出目录:

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