如何在目标中获取 msbuild 进程的 proc-id?我想读它并写出来?
或者,MSBuild 是否具有某种我们可以捕获的会话 ID?
我想每次构建运行只运行一次 T4 任务,并考虑一种有条件的构建方式。否则它运行多次
<TransformOnBuild>false</TransformOnBuild>
<TransformOnBuild Condition="'$(SomeCondition)' == 'true'">false</TransformOnBuild>
Run Code Online (Sandbox Code Playgroud)
如果您想在可以将其包装在目标中后运行某些内容,则无论调用多少次,MSBuild 都不会执行相同的目标两次。如果你想要一个简单的互斥锁,你可以使用通常的锁定文件技术,使用内置的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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |