是否有可能在msbuild中编写一个条件,检查某个进程是否存在? 或者,有没有人知道这样的任务?
今天,我的进程创建了一个pid文件,我检查它是否存在。但是我不喜欢涉及此类文件的所有额外维护。
有什么建议吗?
是否有可能在msbuild中编写一个条件,检查某个进程是否存在? 或者,有没有人知道这样的任务?
今天,我的进程创建了一个pid文件,我检查它是否存在。但是我不喜欢涉及此类文件的所有额外维护。
有什么建议吗?
MSBuild Extension Pack和MSBuild Community Tasks中都没有这样的任务。但是你可以轻松地创建一个类似的任务,就像这样:
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;
}
}
}
您可以像这样使用它:
<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>