public BuildRequestConfiguration GetMatchingConfiguration(ConfigurationMetadata configMetadata, ConfigCreateCallback callback, bool loadProject) { lock (_lockObject) { BuildRequestConfiguration configuration = GetMatchingConfiguration(configMetadata); // If there is no matching configuration, let the caller create one. if (configuration == null) { configuration = callback(null, loadProject); AddConfiguration(configuration); } else if (loadProject) { // We already had a configuration, load the project // If it exists but it cached, retrieve it if (configuration.IsCached) { configuration.RetrieveFromCache(); } // If it is still not loaded (because no instance was ever created here), let the caller populate the instance. if (!configuration.IsLoaded) { callback(configuration, loadProject: true); } } // In either case, make sure the project is loaded if it was requested. if (loadProject) { ErrorUtilities.VerifyThrow(configuration.IsLoaded, "Request to create configuration did not honor request to also load project."); } return(configuration); } }
public BuildRequestConfiguration GetMatchingConfiguration(ConfigurationMetadata configMetadata, ConfigCreateCallback callback, bool loadProject) { return(_override.GetMatchingConfiguration(configMetadata, callback, loadProject) ?? CurrentCache.GetMatchingConfiguration(configMetadata, callback, loadProject)); }
/// <summary> /// Gets a matching configuration. If no such configuration exists, one is created and optionally loaded. /// </summary> public BuildRequestConfiguration GetMatchingConfiguration(ConfigurationMetadata configMetadata, ConfigCreateCallback callback, bool loadProject) { lock (_configurations) { BuildRequestConfiguration configuration = GetMatchingConfiguration(configMetadata); // If there is no matching configuration, let the caller create one. if (configuration == null) { configuration = callback(null, loadProject); AddConfiguration(configuration); } else if (loadProject) { // We already had a configuration, load the project // If it exists but it cached, retrieve it if (configuration.IsCached) { configuration.RetrieveFromCache(); } // If it is still not loaded (because no instance was ever created here), let the caller populate the instance. if (!configuration.IsLoaded) { callback(configuration, loadProject: true); } } // In either case, make sure the project is loaded if it was requested. if (loadProject) { ErrorUtilities.VerifyThrow(configuration.IsLoaded, "Request to create configuration did not honor request to also load project."); } return configuration; } }