是否可以在msbuild中编写一个Condition来检查某个进程是否存在?或者,有没有人知道这样的任务?
今天,我的进程创建了一个pid文件,我检查它的存在.但我不喜欢这种文件所涉及的所有额外维护.
有任何想法吗?
MSBuild扩展包或MSBuild社区任务中没有此类任务.但你可以很容易地创造出这样一个.像这样的东西:
using System.Diagnostics;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace StackOverflow.MSBuild
{
public class IsProcessRunning : Task
{
private string processName;
private bool isRunning;
[Required]
public string ProcessName
{
get { return processName; }
set { processName = value; }
}
[Output]
public bool IsRunning
{
get { return isRunning; }
}
public override bool Execute()
{
if(string.IsNullOrEmpty(processName))
{
Log.LogError("ProcessName could not be empty");
return false;
}
foreach(Process clsProcess in Process.GetProcesses())
{
if(clsProcess.ProcessName.Contains(processName))
{
isRunning = true;
}
}
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你就这样使用它:
<UsingTask AssemblyFile="$(Task_Assembly_path)"
TaskName="StackOverflow.MSBuild.IsProcessRunning" />
<Target Name="TestTask">
<IsProcessRunning ProcessName="${Process}">
<Output ItemName="Result" TaskParameter="IsRunning"/>
</IsProcessRunning>
<Message Text="Process ${Process} is running"
Condition="'${Result}' == 'true'"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
755 次 |
最近记录: |