Нежелательные библиотеки, специфичные для библиотек DLL, скопированные в каталог bin

Я использую visual studio 2013 и Свободная проверка 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 для культуры?

Ответ 1

Моим решением было добавить эту цель в конец файла .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 (внизу страницы)

Ответ 2

У меня была такая же проблема с внешней библиотекой, я добавляю post-build script в свойствах проекта Visual Studio, которые удаляют все папки (для меня все в порядке, в противном случае установлен список dirs) в каталоге вывода:

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