Аз съм разработчик на проекта horn OSS, който има за цел да облекчи болката от изграждането на други OSS проекти. Ние се опитваме да направим рога рубинени скъпоценни камъни като опит. Едно от многото предизвикателства на horn е да се справяте с всички различни машини за изграждане като Nant, powershell, msbuild и rake, което е целта на тази публикация.
Horn има 2 проявления, работи като инструмент за cmd линия и също така работи като услуга на Windows, където изгражда всички различни пакети, които могат да бъдат изтеглени от този уебсайт.
Някои OSS проекти използват rake, за да изградят изходния си код, което в крайна сметка ме доведе до точката на тази публикация.
Не мога да накарам процеса на рейк да се изпълнява от услугата Windows, докато точно същият код може да стартира процеса на рейк без никакви проблеми, когато се изпълнява от командния ред. Причината, че rake се изпълнява от инструмента cmd line може да е, че е свързан с прозорец, въпреки че не мога да кажа правилно. Не се хвърля изключение, но процесът просто не стартира.
Смешното е, че всеки друг .exe работи добре и само рейк причинява проблема.
Ето кода за стартиране, който създава процеса:
public IProcess GetProcess(string pathToBuildTool, string cmdLineArguments, string workingDirectoryPath)
{
var psi = new ProcessStartInfo(pathToBuildTool, cmdLineArguments)
{
UseShellExecute = false,
RedirectStandardOutput = true,
WorkingDirectory = workingDirectoryPath,
Arguments = cmdLineArguments
};
return new DiagnosticsProcess(Process.Start(psi));
}
Някой има ли предложения какъв е проблемът?