我正在使用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?
答案 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