14

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

例子:

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

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

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

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

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

4

4 回答 4

11

我不确定如何完全按照您的要求进行操作,但是您可以使用 /p 选项传递该字符串吗?

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

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

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

...
</Target>
于 2008-09-29T19:29:04.513 回答
8

我找到了答案!

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

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

于 2008-09-30T16:04:10.487 回答
4

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

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

于 2008-09-29T19:51:26.720 回答
-3

我建议使用像 CCNET 这样的服务器来处理构建执行和通知。当然,您可以对您的 MSBuild 脚本执行操作以发送通知,但该域属于构建服务器。

于 2008-09-29T21:21:27.143 回答