MSBuild-从命令行获取目标

时间:2020-03-06 14:53:23  来源:igfitidea点击:

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

例子:

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

我想访问.Proj文件中的目标词ApplicationDeployment。

有没有我可以使用的财产?任何线索如何做到这一点?

编辑:我不想也必须传递一个属性来获得此。

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

解决方案

我不确定如何确切地执行要求,但是可以使用/ p选项传递该字符串吗?

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

我可以看到的唯一另一种方法是在每个目标中使用条件属性,从而建立要调用的第一个目标。

<Target Name="ApplicationDeployment">
<PropertyGroup>
  <InvokedTarget Condition="'${InvokedTarget}'==''">ApplicationDeployment</InvokedTarget>
</PropertyGroup>

...
</Target>

(我知道)没有办法做到这一点。 MSBuild没有用于请求构建的目标列表的属性。

但是,如果找到一种方法,请记住它可能不是单个目标,而是要构建的目标列表。

我建议使用CCNET之类的服务器来处理构建执行和通知。当然,我们可以对MSBuild脚本进行处理以发送通知,但是该域属于构建服务器。

我找到了答案!

<Target Name="ApplicationDeployment" >
    <CreateProperty Value="$(MSBuildProjectName) - $(Environment) - Application Deployment Complete">
      <Output TaskParameter="Value" PropertyName="DeploymentCompleteNotifySubject" />
    </CreateProperty>

我想部分归因于冷漠。不知道该怎么做。