Je veux déclarer trois propriétés dans mon fichier MSBuild et écraser une propriété avec la valeur d'une autre (en fonction de la cible appelée), mais je n'arrive pas à comprendre comment procéder. Mon fichier de construction ressemble à ceci:Ecraser des propriétés avec MSBuild
<PropertyGroup>
<DeployPath_TEST>\\test-server-path\websites\mysite</DeployPath_TEST>
<DeployPath_LIVE>\\live-server-path\websites\mysite</DeployPath_LIVE>
<DeployPath></DeployPath>
</PropertyGroup>
<Target Name="Deploy-TEST">
<PropertyGroup>
<DeployPath>$(DeployPath_TEST)</DeployPath>
</PropertyGroup>
<CallTarget Targets="Deploy-Sub"/>
</Target>
<Target Name="Deploy-LIVE">
<PropertyGroup>
<DeployPath>$(DeployPath_TEST)</DeployPath>
</PropertyGroup>
<CallTarget Targets="Deploy-Sub"/>
</Target>
<Target Name="Deploy-Sub">
<Message Text="Deploying to $(DeployPath)"/>
<MSBuild Projects="MySolution.csproj" Targets="Rebuild" />
<ItemGroup>
<MyFiles Include="**\*"/>
</ItemGroup>
<Copy SourceFiles="@(MyFiles)"
DestinationFiles="@(MyFiles->'$(DeploymentPath)\%(RecursiveDir)%(FileName)%(Extension)')"/>
</Target>
En ce moment je suis en train de re-déclarer la propriété est mise en valeur en conséquence il, mais cela ne fonctionne pas.
Merci, c'était utile. Je suis encore un peu novice en matière de dosage et MS ne fait pas du bon travail en expliquant les concepts liés à mon avis. Une note de plus. En fait, je suis parti sans créer une propriété globale; cela rétrécit un peu le contexte, il est donc plus facile de lire le code: la cible A appelle les cibles B et C. B définit une propriété de liste et C effectue un traitement par lots sur la valeur de cette propriété. comme mighter a noté que la définition de la propriété dans la même cible n'a pas fonctionné. J'espère que ça aide quelqu'un; J'ai passé 3-4 heures à essayer de comprendre cela avant de trouver ce post. – AlexeiOst
Encore un point, vous dites que vous recevez une notification que seul Cat a changé, avez-vous essayé d'enregistrer les modifications? Est-ce que ça marche? (J'en doute) –