in src/dotnet/RiderPlugin.UnrealLink/PluginInstaller/UnrealProjectsRefresher.cs [67:105]
private static void RegenerateProjectFiles(Lifetime lifetime, ISolution solution,
UnrealHost unrealHost,
VirtualFileSystemPath engineRoot, VirtualFileSystemPath uprojectFile)
{
void LogFailedRefreshProjectFiles()
{
unrealHost.myModel.RiderLinkInstallMessage(new InstallMessage(Strings.FailedToRefreshProjectFiles_Text,
ContentType.Normal));
unrealHost.myModel.RiderLinkInstallMessage(
new InstallMessage(Strings.RiderLinkPluginWillNotBeVisibleInThe_Text, ContentType.Normal));
unrealHost.myModel.RiderLinkInstallMessage(new InstallMessage(
Strings.NeedToRefreshProjectFilesManually_Text,
ContentType.Normal));
}
if (!engineRoot.IsValidAndExistDirectory())
{
OurLogger.Warn($"[UnrealLink]: Couldn't find Unreal Engine root");
LogFailedRefreshProjectFiles();
return;
}
if (PlatformUtil.RuntimePlatform != JetPlatform.Windows) return;
var ueVersion = solution.GetComponent<ICppUE4SolutionDetector>().UnrealContext.Value.Version;
var pathToUnrealBuildToolBin = CppUE4FolderFinder.GetAbsolutePathToUnrealBuildToolBin(engineRoot, ueVersion);
// 1. If project is under engine root, use GenerateProjectFiles.{extension} first
if (GenerateProjectFilesCmd(lifetime, solution, unrealHost, uprojectFile, engineRoot)) return;
// 2. If it's a standalone project, use UnrealVersionSelector
// The same way "Generate project files" from context menu of .uproject works
if (RegenerateProjectUsingBundledUVS(lifetime, unrealHost, uprojectFile, engineRoot)) return;
if (RegenerateProjectUsingSystemUVS(lifetime, solution, unrealHost, uprojectFile)) return;
// 3. If UVS is missing or have failed, fallback to UnrealBuildTool
if (RegenerateProjectUsingUBT(lifetime, unrealHost, uprojectFile, pathToUnrealBuildToolBin, engineRoot)) return;
OurLogger.Warn("[UnrealLink]: Couldn't refresh project files");
LogFailedRefreshProjectFiles();
}