2009-10-20 4 views
0

J'utilise MSBuild pour personnaliser le processus de construction des projets Visual Studio, WiX, SandCastle, .... Pour garder le plus générique possible, j'aimerais utiliser des fichiers texte définissant des paramètres spécifiques au projet, comme l'endroit où les fichiers doivent être chargés, les exécutables personnalisés à exécuter, etc.MSBuild: Évaluation des propriétés réservées avec ReadLinesFromFile

Un fichier texte pourrait ressembler à ceci: $ (MSBuildProjectDirectory) .... \ Projects \ Project1 \ bin \ Release obj \ $ (Configuration) \ Project1.Files.wxi -in * Test .dll -id

Chaque ligne représente une commande ou un fichier.

Dans mes cibles j'utilise ReadLinesFromFile pour obtenir le contenu de ces fichiers. Jusqu'ici tout va bien! Le problème est que les propriétés réservées comme '$ (Configuration), $ (MSBuildProjectDirectory)' ne sont pas évaluées, elles sont simplement traitées comme du texte normal.

Des idées sur comment je pourrais évaluer ces $ -placeholders sans créer une tâche personnalisée?

Merci d'avance!

Cordialement, robert.oh.

Répondre

1

Plutôt que de lire les lignes et tout vous analyse, pourquoi ne pas créer un fichier séparé (nommé, par exemple, « local.build.config ») qui a le

<PropertyGroup> 
    <someproperty>$(MSBuildProjectDirectory)..\Projects\Project1\bin\Release</someproperty> 
</PropertyGroup> 

informations dans le fichier, et puis dans votre projet réel faire une importation du fichier avec une ligne comme celle-ci en haut de votre construction:

<Import Project="local.build.config" Condition="Exists('local.build.config')"/> 

Prévient réinventer la roue en laissant le moteur MSBuild faire ce qu'il fait le mieux.

+0

Merci pour le conseil!
J'utilise ItemGroups pour ma liste de commandes (un article par commande) et tout fonctionne bien maintenant. –

+0

+1 C'est une bonne idée, mais pour que l'exemple fonctionne pour moi, j'ai dû ajouter autour du PropertyGroup. –

Questions connexes