Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSBuild-从命令行获取调用的目标_Msbuild_Build Automation_Automated Deploy - Fatal编程技术网

MSBuild-从命令行获取调用的目标

MSBuild-从命令行获取调用的目标,msbuild,build-automation,automated-deploy,Msbuild,Build Automation,Automated Deploy,有人知道如何获取从MSBuild命令行调用的目标(/t)的名称吗?有几种类型的目标可以调用,我想在给用户的通知中使用该属性 例如: msbuild Project.proj /t:ApplicationDeployment /p:Environment=DEV 我想访问.Proj文件中的目标单词ApplicationDeployment 有我可以进入的地方吗?你知道怎么做吗 编辑:我不希望也必须传入属性才能获得此属性 更新:这基于使用MSBuild脚本的部署脚本。我的构建服务器不用于部署代码,

有人知道如何获取从MSBuild命令行调用的目标(/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>


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

我可以,但我想知道如何访问目标本身。谢谢你的否决票。我确实阅读了MSBuild文档进行检查,我不相信MSBuild提供了这些信息。提供了解决方案。属性组在目标内不起作用。这是怎么回事?嗯,在目标中使用PropertyGroup的Microsoft.TeamFoundation.Build.targets中有很多例子。也许这是TeamBuild唯一的东西。也许这是MSBuild 2008的东西?这是如何回答您的问题的?这不会提供在命令行上调用的目标列表,而是在执行特定任务时创建新属性。你的问题错了吗?本质上,这也达到了同样的结果。这将允许您设置一个属性,该属性可以告诉您被调用的目标是什么(在我的示例中是AppDeploy vs DBDeploy)。在到达每个目标的每个实例中,您可以设置相同的属性。我通过在我创造的价值中添加一些东西来阐述更多内容。