MSBuild - 从命令行获取目标

fer*_*der 14 msbuild build-automation automated-deploy

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

例:

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Tim*_*ker 10

我不确定如何完全按照你的要求做,但你可以使用/ p选项传递该字符串吗?

msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV;MyValue=ApplicationDeployment
Run Code Online (Sandbox Code Playgroud)

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

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

...
</Target>
Run Code Online (Sandbox Code Playgroud)


fer*_*der 7

我找到了答案!

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

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

  • 这是对你的问题的答案如何?这不会为您提供在命令行上调用的目标列表,它将在执行特定任务时创建新属性.你的问题有误吗? (4认同)

Fra*_*nov 5

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

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