如何在目标内获取msbuild进程的进程ID?我想要读取并输出它。
或者,MSBuild是否有某种会话ID可以捕获?
我想要在构建运行期间仅运行一次T4任务,并考虑使用一种条件构建方式。否则它会多次运行。
<TransformOnBuild>false</TransformOnBuild>
<TransformOnBuild Condition="'$(SomeCondition)' == 'true'">false</TransformOnBuild>
如何在目标内获取msbuild进程的进程ID?我想要读取并输出它。
或者,MSBuild是否有某种会话ID可以捕获?
我想要在构建运行期间仅运行一次T4任务,并考虑使用一种条件构建方式。否则它会多次运行。
<TransformOnBuild>false</TransformOnBuild>
<TransformOnBuild Condition="'$(SomeCondition)' == 'true'">false</TransformOnBuild>
WriteLinesToFile
和Delete
任务,以及InitialTargets
。如果您想要实际的进程ID,即正在执行您的任务的(其中之一的)MSBuild节点,可以编写内联任务,请参见下面的示例。<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="Process" TaskFactory="CodeTaskFactory" AssemblyName="Microsoft.Build.Tasks.v12.0">
<ParameterGroup>
<Id ParameterType="System.Int32" Output="true" />
</ParameterGroup>
<Task>
<Code>Id = System.Diagnostics.Process.GetCurrentProcess().Id;</Code>
</Task>
</UsingTask>
<Target Name="Foo">
<Process>
<Output PropertyName="Id" TaskParameter="Id" />
</Process>
<Message Text="Process $(Id)" />
</Target>
</Project>