in src/dotnet/RiderPlugin.UnrealLink/PluginInstaller/UnrealProjectsRefresher.cs [107:147]
private static bool GenerateProjectFilesCmd(Lifetime lifetime, ISolution solution, UnrealHost unrealHost,
VirtualFileSystemPath uprojectFile, VirtualFileSystemPath engineRoot)
{
// Invalid uproject file means we couldn't get uproject file from solution detector and the project might be
// under Engine source
var invalidUprojectFile = !uprojectFile.IsValidAndExistFile();
var isProjectUnderEngine = invalidUprojectFile || uprojectFile.StartsWith(engineRoot);
if (!isProjectUnderEngine)
{
OurLogger.Info($"[UnrealLink]: {solution.SolutionFilePath} is not in {engineRoot} ");
return false;
}
var generateProjectFilesCmd = engineRoot / $"GenerateProjectFiles.{CmdUtils.GetPlatformCmdExtension()}";
if (!generateProjectFilesCmd.ExistsFile)
{
OurLogger.Info($"[UnrealLink]: {generateProjectFilesCmd} is not available");
return false;
}
var pipeStreams = CreatePipeStreams(unrealHost, "[GenerateProjectFiles]:");
var startInfo = CmdUtils.GetProcessStartInfo(pipeStreams, generateProjectFilesCmd, generateProjectFilesCmd.Directory);
OurLogger.Info($"[UnrealLink]: Regenerating project files: {startInfo.Arguments}");
try
{
var result = CmdUtils.RunCommandWithLock(lifetime, startInfo, OurLogger) == 0;
if (!result)
{
OurLogger.Warn($"[UnrealLink]: Failed refresh project files, calling {generateProjectFilesCmd} went wrong");
}
return result;
}
catch (ErrorLevelException errorLevelException)
{
OurLogger.Error(errorLevelException,
$"[UnrealLink]: Failed refresh project files, calling {generateProjectFilesCmd} went wrong");
return false;
}
}