2017-09-29 4 views
0

Je suis en train d'écrire un script sur mon processus de construction, et j'aimerais avoir un seul script MSBuild qui clone un repo, puis inclut les propriétés d'un fichier dans ce repo pour piloter la construction . La seule façon que j'ai trouvé pour inclure des propriétés d'un autre fichier est avec la tâche Import, qui ne peut pas résider à l'intérieur d'un Target, donc le fichier qu'il importe doit exister quand MSBuild est initialement appelé. Est-il possible d'exécuter le Import après l'exécution d'une cible, ou d'une autre manière pour extraire les propriétés d'un fichier au milieu d'une construction?Comment charger dynamiquement des propriétés à partir d'un fichier dans MSBuild

Répondre

0

J'ai décidé de faire deux appels séparés à mon script dans le script BAT qui l'invoque. Le premier appelle ma tâche de clonage, qui crée le fichier de propriétés. La seconde appelle les tâches qui nécessitent ces propriétés. Je me suis assuré que la tâche <Import> a un conditionnel nécessitant l'existence du fichier. Je suis toujours ouvert à une approche plus propre, mais cela fonctionne.

1

Vous devez appeler "msbuild" task pour exécuter un autre processus msbuild pour le même projet avec des paramètres spécifiques (chemin d'accès au fichier .props par exemple).

<Target Name="Default"> 
    <MSBuild 
     Projects="$(MSBuildThisFileFullPath)" 
     Properties="ParamsPath='./ParamsPath/name.props" 
     Targets="DoSomethingTarget"/> 
</Target> 
<Import Project=$(ParamsPath) Condition="Exists('$(ParamsPath)')"/> 
<Target Name="DoSomethingTarget"> 
    <DoSomeThingTasks/> 
</Target> 

Mais je suis sûr que "le bon outil pour bien faire le travail". Peut-être que vous devriez regarder des solutions telles que FAKE, PSake, Cake?