MSBuild - 从命令行获取目标

时间:2008-09-29 18:40:24

标签: msbuild build-automation automated-deploy

有谁知道如何获取从MSBuild命令行调用的TARGET(/ t)的名称?可以调用几种类型的目标,我希望在向用户发送通知时使用该属性。

示例:

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV

我希望访问.Proj文件中的目标字ApplicationDeployment

我可以访问的属性吗?有任何线索如何做到这一点?

编辑:我不想传递属性来获取此内容。

更新:这是基于使用MSBuild脚本的部署脚本。我的构建服务器不用于部署代码,仅用于构建。构建服务器本身具有可以选择的构建通知。

4 个答案:

答案 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脚本执行发送通知的操作,但该域属于构建服务器。