// Copyright Epic Games, Inc. All Rights Reserved. using System; using System.Collections.Generic; #pragma warning disable CA1715 // Identifiers should have correct prefix namespace EpicGames.Core { /// /// This interface exists to allow the CsProjBuilder in EpicGames.MsBuild to call back out /// into EpicGames.Build. It is EXTREMELY important that any type definitions that must be /// referenced or implemented in EpicGames.Build for use by EpicGame.MsBuild *NOT* be defined /// in EpicGames.MsBuild. If they are, there is a strong chance of running into an issue /// gathering types (Assembly.GetTypes()) on EpicGames.Build. /// public interface CsProjBuildHook { /// /// Test the cache for a given file to get the last write time of the given file /// /// Base path of the file. /// Relative path of the file /// Last write time of the file. DateTime GetLastWriteTime(DirectoryReference basePath, string relativeFilePath); /// /// Test the cache for a given file to get the last write time of the given file /// /// Base path of the file. /// Relative path of the file /// Last write time of the file. DateTime GetLastWriteTime(string basePath, string relativeFilePath); /// /// Return the build record directory for the given base path (i.e. engine dir or project dir) /// /// The base path for the directory /// Directory for the build records DirectoryReference GetBuildRecordDirectory(DirectoryReference basePath); /// /// Validate the given build records for the project /// /// Build records being validated. This also includes build records for dependencies. /// Path of the project void ValidateRecursively(Dictionary buildRecords, FileReference projectPath); /// /// (Optional) Sets of existing build records that are valid /// /// The records to set void SetValidBuildRecords(IReadOnlyDictionary records); /// /// (Optional) Collection of existing build records for projects already been registered as valid, which could be skipped when building /// IReadOnlyDictionary ValidBuildRecords { get; } /// /// Unreal engine directory /// DirectoryReference EngineDirectory { get; } /// /// Dotnet directory shipped with the engine /// DirectoryReference DotnetDirectory { get; } /// /// Dotnet program /// FileReference DotnetPath { get; } } }