anchor.diff:      else
           failwithf "Attribute '%s' not found" attribute.Name
   
  +/// Update a set of attributes in an AssemblyInfo file. Fails if any attribute is not found.
  +/// ## Parameters
  +///  - `assemblyInfoFile` - The file to update. Language C#, F#, VB or C++ is determined from the extension. 
  +///  - `attributes` - The Attributes that should be updated matched on Name (Namespace is not used).
   let UpdateAttributes assemblyInfoFile (attributes: seq<Attribute>) =
       tracefn "Updating attributes in: %s" assemblyInfoFile
   
  
positive.code:                                        m.Groups.["value"].Value,
                                         ""))
  
  let GetAttribute attrName assemblyInfoFile =
      assemblyInfoFile |> GetAttributes |> Seq.tryFind (fun a -> a.Name = attrName) 
      
  let GetAttributeValue attrName assemblyInfoFile =
      match GetAttribute attrName assemblyInfoFile with
      | Some attr -> Some attr.Value
  
negative.code:     else
          text
  
  /// Read attributes from an AssemblyInfo file and return as a sequence of Attribute.
  /// ## Parameters
  ///  - `assemblyInfoFile` - The file to read attributes from. Language C#, F#, VB or C++ is determined from the extension. 
  let GetAttributes assemblyInfoFile =
      let text = File.ReadAllText assemblyInfoFile
  
  