anchor.diff:      (Extensions.XPathSelectElement(config, xpath))
   
   /// Reads a config file from the given file name, replaces an attribute using the given xPath and writes it back.
  +/// ## Parameters
  +///  - `fileName` - The file name of the config file.
  +///  - `xpath` - An XPath term which can be used to replace the attribute.
  +///  - `attribute` - The attribute name for which the value should be replaced.
  +///  - `value` - The new attribute value.
   let updateConfigSetting fileName xpath attribute value =
       let config = readConfig fileName
       let node = getElement config xpath
  
positive.code:         config.Save(fs)
  
  /// Reads a config file from the given file name, replaces the app setting value and writes it back.
  let updateAppSetting key value file =
      updateConfigSetting file ("appSettings/add[@key='" + key + "']") "value" value
  
  /// Reads a config file from the given file name, replaces the connection string value and writes it back.        
  let updateConnectionString connectionStringKey value file =
      updateConfigSetting file ("connectionStrings/add[@name='" + connectionStringKey + "']") "connectionString" value
negative.code: open System.Xml.Linq
  open System.Xml.XPath
  
  /// Reads a config file into an XElement.
  /// ## Parameters
  ///  - `fileName` - The file name of the config file.
  let readConfig fileName =
      use fileStream = File.OpenRead(fileName) 
      let configElement = XElement.Load fileStream
  