【问题标题】:unwanted culture specific dlls copied to bin directory不需要的文化特定 dll 复制到 bin 目录
【发布时间】:2015-09-26 03:35:27
【问题描述】:

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

【问题讨论】:

  • 您找到解决方案了吗?
  • 这些程序集包含在 Fluent Validation 包中,因此一种方法是从包中删除所有不需要的区域性(麻烦为每个新版本重新应用更改)或执行后续操作构建清理。
  • 我知道这种方式,但正在寻找更好的解决方案

标签: c# .net visual-studio fluentvalidation


【解决方案1】:

我的解决方案是将此目标添加到 .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(在页面底部)

【讨论】:

  • 除了发布之外,还有什么相同的呢?我的意思是,我在发布后在 BIN 目录中看到了这些文件夹。
  • @Romias,请尝试我更新的答案,它解决了 Publish 场景。如果您之前已经部署过,请务必清理一次部署目标。
  • 现在有更好的解决方案,这个答案不应再被标记为解决方案:stackoverflow.com/questions/30262592/…
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2018-07-04
    • 2017-01-27
    • 2014-06-26
    相关资源
    最近更新 更多