2015-05-15 8 views
14

In einem meiner Projekte verwende ich eine wunderbare Bibliothek namens Humanizer. Diese Bibliothek kommt in vielen Sprachvarianten (ich zählte 38).Lokalisierte Versionen von Assemblies aus der Build-Ausgabe auslassen

Wenn ich mein Projekt erstelle, sehe ich dann alle diese Ordner wie "af", "ar", "bg", "bn-BD", ..., "zh-Hant" mit Assemblies, die die lokalisierten Ressourcen enthalten für diese Bibliothek.

Mein Problem ist, dass mein Projekt nur Englisch ist und ich habe kein Interesse an all diesen lokalisierten Baugruppen in meiner Build-Ausgabe. Gibt es eine gute Möglichkeit, sie vom Build wegzulassen?

Ich suche nach allgemeinen Lösungen für dieses Problem. Es geschieht mit anderen Bibliotheken als Humanizer, wie DevExpress Controls usw., die nicht Open-Source sind.

Antwort

20

Was können Sie tun, ist ein Ziel hinzuzufügen (hier, ich nannte es ‚RemoveSatelliteAssemblies‘) mit der msbuild CSPROJ Projektdatei, zum Beispiel am Ende:

<Project...> 
    .... 
    <Target Name="RemoveSatelliteAssemblies" AfterTargets="ResolveAssemblyReferences"> 
    <ItemGroup> 
     <ReferenceCopyLocalPaths Remove="@(ReferenceSatellitePaths)" /> 
    </ItemGroup> 
    </Target> 
</Project> 

Dieses Ziel nach dem Laufe wird Standard ResolveAssemblyReferences Ziel (irgendwo in einer Microsoft.Common[something].targets Datei im Verzeichnis C:\Program Files (x86)\MSBuild oder im Verzeichnis C:\Windows\Microsoft.Net definiert - es hängt von Ihren Visual Studio/MsBuild Setups und Versionen), und es wird alle Referenz Satellitenpfade aus der Liste der referenzierten Pfade als Kopie markiert entfernen local (beide ItemGroup-Namen werden auch in der Standardtargets-Datei deklariert).

+1

Vielen Dank. Funktioniert perfekt. –