J'ai un processus où j'ai besoin d'automatiser le processus de génération des assemblages satellites. Plus précisément, il s'agit de WPF et de la combinaison des ressources Resx et BAML.Génération et compilation de fichiers .resources avec MsBuild
J'ai un script de construction qui fonctionne, mais il nécessite l'ajout manuel des fichiers .resources que je veux combiner avec les ressources BAML. IOW, je dois ajouter au script de construction chaque fois que j'ajoute une ressource .Resx. Pas cool!
Actuellement, je suis en cours d'exécution l'éditeur de liens d'assemblage manuellement et le script ressemble à ceci:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Adds the build action 'LocBamlCsv' -->
<ItemGroup>
<AvailableItemName Include="LocBamlCsv" />
</ItemGroup>
<Target Name="CreateSatelliteAssemblies"
DependsOnTargets="$(CreateSatelliteAssembliesDependsOn)">
<!-- Locbaml needs the runtime assemblies in the intermediate dir -->
<Copy SourceFiles="$(ProjectDir)..\Tools\LocBaml.exe"
DestinationFolder="$(OutputPath)" />
<!-- generate a .resources file for .csv merged output -->
<Exec Command="LocBaml /generate ..\..\$(IntermediateOutputPath)$(TargetName).g.$(UICulture).resources /trans:%(LocBamlCsv.FullPath) /out:../../$(IntermediateOutputPath) /cul:%(LocBamlCsv.Culture)"
WorkingDirectory="$(OutputPath)"
Outputs="$(OutputPath)%(LocBamlCsv.Culture)\$(TargetName).$(UICulture).dll" />
<!-- Generate the resource assembly by merging all .resources files -->
<!-- NOTE: Explicitly add any resource files here -->
<Exec Command="al /template:$(TargetName).exe /culture:%(LocBamlCsv.Culture) /out:%(LocBamlCsv.Culture)\$(TargetName).resources.dll /embed:$(TargetName).g.%(LocBamlCsv.Culture).resources /embed:$(TargetName).Properties.Resources.%(LocBamlCsv.Culture).resources"
WorkingDirectory="$(InterMediateOutputPath)"
/>
</Target>
</Project>
Comme mentionné cela fonctionne. mais la dernière commande qui appelle al serait beaucoup plus facile à utiliser s'il y avait un moyen d'utiliser des caractères génériques (par exemple $ (TargetName). * s.% (LocBamlCsv.Culture) .resources
J'ai J'ai essayé un certain nombre de choses: utiliser le processus de construction semble se déclencher au mauvais moment et il finit par échouer à trouver des fichiers
Vous pouvez toujours écrire un script qui scanne le répertoire * .res ou autre et génère le script de compilation. –
Jeff des liens sur la façon de faire cela? Je ne suis pas à la hauteur sur msbuild et je ne suis pas sûr de savoir comment je peux obtenir les fichiers et les rediriger vers le chemin de l'éditeur de liens. L'autre problème est que la section ne fonctionne pas (même avec les noms de fichiers codés en dur - probablement parce que le timing dans le processus de construction où ces fichiers sont disponibles est faux) où la commande explicite le fait. –
Désolé, non. C'est pourquoi c'est un commentaire au lieu d'une réponse. :) Mais vous savez, perl ou python et ajoutez simplement vos fichiers au script de construction au lieu de le faire à la main. –