我想在我的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>
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试重新声明属性设置它的值,但这不起作用.
Mat*_*ser 14
Mehmet关于如何从另一个属性设置属性值是正确的,但MSBuild中存在一个错误/特征,这意味着如果在同一个Target中调用CreateProperty和CallTarget,则新属性将不会全局可用于其他目标(描述在这里).
所以这是问题的最终解决方案:
<PropertyGroup>
<DeployPath_TEST>\\test-server-path\websites\mysite</DeployPath_TEST>
<DeployPath_LIVE>\\live-server-path\websites\mysite</DeployPath_LIVE>
<DeployPath></DeployPath>
</PropertyGroup>
<Target Name="SetDeployPath-TEST">
<CreateProperty Value="$(DeployPath_TEST)">
<Output TaskParameter="Value" PropertyName="DeployPath"/>
</CreateProperty>
</Target>
<Target Name="Deploy-TEST">
<CallTarget Targets="SetDeployPath-TEST"/>
<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>
Run Code Online (Sandbox Code Playgroud)
您可以使用CreateProperty任务覆盖现有属性的值.
<Target Name="Deploy-LIVE">
<CreateProperty Value="$(DeployPath_LIVE)">
<Output PropertyName="DeployPath" TaskParameter="Value"/>
</CreateProperty>
<CallTarget Targets="Deploy-Sub"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24725 次 |
| 最近记录: |