/// <summary> /// Provides an enumerator over property definitions for a specified tools version /// </summary> /// <param name="toolsVersion">The tools version</param> /// <returns>An enumeration of property definitions</returns> protected override IEnumerable <ToolsetPropertyDefinition> GetPropertyDefinitions(string toolsVersion) { RegistryKeyWrapper toolsVersionWrapper = null; try { try { toolsVersionWrapper = _msbuildRegistryWrapper.OpenSubKey("ToolsVersions\\" + toolsVersion); } catch (RegistryException ex) { InvalidToolsetDefinitionException.Throw(ex, "RegistryReadError", ex.Source, ex.Message); } foreach (string propertyName in toolsVersionWrapper.GetValueNames()) { yield return(CreatePropertyFromRegistry(toolsVersionWrapper, propertyName)); } } finally { if (toolsVersionWrapper != null) { toolsVersionWrapper.Dispose(); } } }
/// <summary> /// Provides an enumerator over property definitions for a specified sub-toolset version /// under a specified toolset version. /// </summary> /// <param name="toolsVersion">The tools version.</param> /// <param name="subToolsetVersion">The sub-toolset version.</param> /// <returns>An enumeration of property definitions.</returns> protected override IEnumerable <ToolsetPropertyDefinition> GetSubToolsetPropertyDefinitions(string toolsVersion, string subToolsetVersion) { ErrorUtilities.VerifyThrowArgumentLength(subToolsetVersion, nameof(subToolsetVersion)); RegistryKeyWrapper toolsVersionWrapper = null; RegistryKeyWrapper subToolsetWrapper = null; try { try { toolsVersionWrapper = _msbuildRegistryWrapper.OpenSubKey("ToolsVersions\\" + toolsVersion); } catch (RegistryException ex) { InvalidToolsetDefinitionException.Throw(ex, "RegistryReadError", ex.Source, ex.Message); } try { subToolsetWrapper = toolsVersionWrapper.OpenSubKey(subToolsetVersion); } catch (RegistryException ex) { InvalidToolsetDefinitionException.Throw(ex, "RegistryReadError", ex.Source, ex.Message); } foreach (string propertyName in subToolsetWrapper.GetValueNames()) { yield return(CreatePropertyFromRegistry(subToolsetWrapper, propertyName)); } } finally { toolsVersionWrapper?.Dispose(); subToolsetWrapper?.Dispose(); } }