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>
我想部分归因于冷漠。不知道该怎么做。