private EnvironmentPool FindEnvironmentPool(BuildEnvironment environment) { var entry = new EnvironmentPoolEntry(environment.ProjectFile, environment.Platform, environment.SourceGenerators.Select(Path.GetFullPath).ToArray()); var collection = GetEnvironmentPool(entry); if (collection.IsInvalid) { this.Log().Debug("Discarding source generation host, generators files have been modified"); _domains.TryRemove(entry, out collection); UnloadHosts(collection); collection = GetEnvironmentPool(entry); } return(collection); }
private static EnvironmentPool GetEnvironmentPool(EnvironmentPoolEntry entry) => _domains.TryGetValue(entry, out var hosts) ? hosts : _domains[entry] = new EnvironmentPool(entry);