不需要的文化特定 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
我正在使用 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