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

示例:

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

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

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

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

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

有帮助吗?

解决方案 2

我找到了答案!

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

我想对无动于衷的人给予部分赞誉。不知道怎么做。

其他提示

我不确定如何完全按照你的要求做,但是你可以使用/ 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脚本执行发送通知的操作,但该域属于构建服务器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top