2015-07-08 12 views
13

Sto usando Visual Studio 2013 & Fluent Validation 5.6.2indesiderati DLL specifiche cultura copiati nella directory bin

Vedo che dopo costruire nella cartella bin esso copia tutta la cultura specifica FluentValidation.resources.dll che sembra essere menzionati in .nuspec file di

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

Ma non ho bisogno di questi nella cartella bin, perché il progetto non supporta messaggi specifici della cultura.

Quindi, come posso dire a vs-build di ignorare queste dll specifiche per la cultura?

+0

hai trovato una soluzione per questo? – Alex

+0

Questi assembly sono inclusi nel pacchetto Fluent Validation, quindi un modo è quello di rimuovere dal pacchetto tutte le culture indesiderate (Con la seccatura di riapplicare le modifiche per ogni nuova release) o eseguire una pulizia post-build. – Alex

+0

in questo modo sono a conoscenza, ma sono alla ricerca di una soluzione migliore – algos

risposta

11

La mia soluzione era quella di aggiungere questo obiettivo alla fine del file Csproj prima della chiusura del progetto tag.

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

Non è bello, ma ha fatto il lavoro. Se hai bisogno di una risorsa specifica per la cultura, rimuovi la riga corrispondente dall'elenco. Se un aggiornamento futuro aggiunge una nuova cultura che non si desidera, aggiungerla all'elenco.

L'opzione migliore sarebbe chiedere allo sviluppatore di separare le risorse in più nugets, in questo modo è possibile aggiungere solo quelle necessarie. Continuerò con questa soluzione, per ora, finché qualcuno non ne presenterà uno migliore.


Ora potete trovare la mia soluzione al progetto wiki ufficiale: https://github.com/JeremySkinner/FluentValidation/wiki/f.-Localization (in fondo alla pagina)

+0

E che dire della stessa cosa ma pubblica? Voglio dire, vedo quelle cartelle nella directory BIN dopo la pubblicazione. – Romias

+0

@Romias, prova la mia risposta aggiornata, che risolve lo scenario _Publish_. È importante pulire la destinazione di distribuzione una volta, se già lo si era già distribuito. – Marcos

0

ho avuto lo stesso problema con la libreria esterna, io sono aggiungere script di post-generazione in Visual proprietà del progetto Studio, che cancella tutte le cartelle (per me esso `s va bene, altrimenti la lista set di dirs) alla directory di output:

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