有谁知道如何获取从MSBuild命令行调用的TARGET(/ t)的名称?可以调用几种类型的目标,我希望在向用户发送通知时使用该属性。
示例:
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV
我希望访问.Proj文件中的目标字ApplicationDeployment
。
我可以访问的属性吗?有任何线索如何做到这一点?
编辑:我不想传递属性来获取此内容。
更新:这是基于使用MSBuild脚本的部署脚本。我的构建服务器不用于部署代码,仅用于构建。构建服务器本身具有可以选择的构建通知。
答案 0 :(得分:10)
我不确定如何完全按照你的要求做,但是你可以使用/ p选项传递该字符串吗?
msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment
我能看到的另一种方法是在每个目标中使用条件属性,从而建立第一个要调用的目标。
<Target Name="ApplicationDeployment">
<PropertyGroup>
<InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>
...
</Target>
答案 1 :(得分:7)
我找到了答案!
<Target Name="ApplicationDeployment" >
<CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
<Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
</CreateProperty>
我想对无动于衷的人给予部分赞誉。不知道怎么做。
答案 2 :(得分:4)
没有办法做到这一点(我知道)。 MSBuild没有要求构建的目标列表的属性。
但是,如果您找到了一种方法,请记住它可能不是单个目标,而是要构建的目标列表。
答案 3 :(得分:-1)
我建议使用像CCNET这样的服务器来处理构建执行和通知。当然,您可以对MSBuild脚本执行发送通知的操作,但该域属于构建服务器。