<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/developer/msbuild/2003" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="Microsoft.Build.Commontypes.xsd" />
  <xs:element name="InstallAspNet" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Installs and register script mappings for ASP.NET</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ApplyScriptMaps" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The method used to determine if ASP.NET script mappings should be applied</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ClientScriptsOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When , the aspnet_client scripts will be installed. No script mappings will be updated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Path" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The web application that should have its script maps updated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When , script maps are applied recursively under .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The version of ASP.NET to install</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AssemblyInfo" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Generates an AssemblyInfo files</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AllowPartiallyTrustedCallers" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets whether to allow strong-named assemblies to be called by partially trusted code.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCompany" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly company.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyConfiguration" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly configuration.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCopyright" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly copyright.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCulture" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly culture.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyDelaySign" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly delay sign value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyDescription" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly description.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyFileVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly file version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyInformationalVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly informational version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyKeyFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly key file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyKeyName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly key name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyProduct" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly product.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyTitle" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly title.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyTrademark" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly trademark.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CLSCompliant" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether [CLSCompliant].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CodeLanguage" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the code language.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ComVisible" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether [COMVisible].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="GenerateClass" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to generate the ThisAssmebly class.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Guid" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the GUID.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="InternalsVisibleTo" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Makes it possible to make certain assemblies able to use constructs marked as internal.
            Example might be setting this value to "UnitTests" assembly. The typical use case might 
            be constructors in classes which shouldn't be available to other assemblies, but the unit
            tests should be able to use them.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NeutralResourcesLanguage" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the neutral language which is used as a fallback language configuration 
            if the locale on the computer isn't supported. Example is setting this to "en-US".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SkipVerification" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly delay sign value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UltimateResourceFallbackLocation" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the ultimate resource fallback location.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UnmanagedCode" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly delay sign value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Attrib" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Changes the attributes of files and/or directories</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Archive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets file's archive status.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Compressed" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is compressed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Directories" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the list of directories to change attributes on.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Encrypted" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is encrypted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the list of files to change attributes on.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Hidden" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is hidden, and thus is not included in an ordinary directory listing.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Normal" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is normal and has no other attributes set.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReadOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is read-only.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="System" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is a system file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Beep" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task to play the sound of a beep through the console speaker.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Duration" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the of the beep measured in milliseconds.
            Defaults to 200 milliseconds.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Frequency" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the frequency of the beep, ranging from 37 to 32767 hertz.
            Defaults to 800 hertz.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Computer" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Provides information about the build computer.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="IPAddress" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the IP address of the build computer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Name" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the host name of the build computer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OSPlatform" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the platform identifier of the build computer's operating system .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OSVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the version number of the build computer's operating system.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteTree" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Delete a directory tree.  This task supports wild card directory selection.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DeletedDirectories" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the deleted directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Directories" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the directories to be deleted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is recursive.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FileUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Replace text in file(s) using a Regular Expression.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Encoding" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The character encoding used to read and write the file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the files to update.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IgnoreCase" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value specifies case-insensitive matching. .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Multiline" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value changing the meaning of ^ and $ so they match at the beginning and end, 
            respectively, of any line, and not just the beginning and end of the entire string.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Regex" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the regex.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReplacementCount" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the maximum number of times the replacement can occur.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReplacementText" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the replacement text.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Singleline" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value changing the meaning of the dot (.) so it matches 
            every character (instead of every character except \n).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WarnOnNoUpdate" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When TRUE, a warning will be generated to show which file was not updated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FtpCreateRemoteDirectory" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Creates a full remote directory on the remote server if not exists using the File Transfer Protocol (FTP).
            This can be one directory or a full path to create.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="BufferSize" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the size of the data buffer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastReply" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets the last recieved FTP response over the client socket.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password to login.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Port" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the port number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RemoteDirectory" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the remote directory to create.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerHost" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the server host.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username to login.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FtpDirectoryExists" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Determ if a remote directory exists on a FTP server or not.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="BufferSize" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the size of the data buffer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Exists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets an indication whether the directory exists on the server.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastReply" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets the last recieved FTP response over the client socket.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password to login.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Port" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the port number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RemoteDirectory" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the remote directory to create.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerHost" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the server host.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username to login.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FtpUploadDirectoryContent" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uploads a full directory content to a remote directory.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="BufferSize" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the size of the data buffer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastReply" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets the last recieved FTP response over the client socket.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local directory that contains the content to upload.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password to login.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Port" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the port number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the subdirectories of the local directory should be created remotely and the content of these should also be uploaded.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RemoteDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the remote directory destination for the local files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerHost" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the server host.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username to login.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FtpUpload" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uploads a group of files using File Transfer Protocol (FTP).</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="LocalFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the single file to upload.  Use
            this or LocalFiles, but not both.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local files to upload.  Use this
            or LocalFile, but not both.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RemoteFiles" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the remote files to upload.
            Each item in this list should have a corresponding item in LocalFiles.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RemoteUri" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the remote URI to upload.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UsePassive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the behavior of a client application's data transfer process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FxCop" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uses FxCop to analyse managed code assemblies and reports on
            their design best-practice compliance.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AnalysisReportFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the file name for the analysis report.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ApplyOutXsl" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Applies the XSL transformation specified in /outXsl to the 
            analysis report before saving the file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConsoleXslFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the XSL or XSLT file that contains a transformation to 
            be applied to the analysis output before it is displayed in the console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CustomDictionary" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the custom dictionary.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DependencyDirectories" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies additional directories to search for assembly dependencies. 
            FxCopCmd always searches the target assembly directory and the current 
            working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirectOutputToConsole" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Directs analysis output to the console or to the 
            Output window in Visual Studio .NET. By default, 
            the XSL file FxCopConsoleOutput.xsl is applied to the 
            output before it is displayed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="FailOnError" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the build should
            fail if static code analysis reports errors. Defaults to 
            true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ImportFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the name of an analysis report or project file to import. 
            Any messages in the imported file that are marked as excluded are not 
            included in the analysis results.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeSummaryReport" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Includes a summary report with the informational 
            messages returned by FxCopCmd.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputXslFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the XSL or XSLT file that is referenced by the 
            xml-stylesheet processing instruction in the analysis report.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PlatformDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the location of the version of Mscorlib.dll 
            that was used when building the target assemblies if this 
            version is not installed on the computer running FxCopCmd.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the filename of FxCop project file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RuleLibraries" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the filename(s) of FxCop rule assemblies</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Rules" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The list of rules to run</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SaveResults" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Saves the results of the analysis in the project file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SearchGac" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Tells FxCop to search the GAC for assembly references. This parameter was added in FxCop 1.35</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetAssemblies" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the target assembly to analyze.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TypeList" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Comma-separated list of type names to analyze.  This option disables 
            analysis of assemblies, namespaces, and resources; only the specified 
            types and their members are included in the analysis.  
            Use the wildcard character '*' at the end of the name to select multiple types.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the output is verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="GacUtil" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task to install and uninstall assemblies into the GAC</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the assembly name or file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="msb:GacUtilCommandsType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Failed" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the number of assemblies that failed to installed/uninstalled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to force reinstall of an assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeRelatedFiles" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether related files are included when installing in GAC.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="InstalledNames" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the installed assembly names.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="InstalledPaths" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the installed assembly paths.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Quiet" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether warning messages are output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RelatedFileExtensions" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the related file extensions to copy when  is true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Skipped" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the number of assemblies that were skipped during installed/uninstalled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Successful" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the number of assemblies successfully installed/uninstalled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="GacUtilCommandsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Install">
            <xs:annotation>
              <xs:documentation>Install the list of assemblies into the GAC.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Uninstall">
            <xs:annotation>
              <xs:documentation>Uninstall the list of assembly names from the GAC.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="GetSolutionProjects" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Retrieves the list of Projects contained within a Visual Studio Solution (.sln) file</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] A list of the project files found in</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Solution" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Name of Solution to get Projects from</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="GitClient" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for Git commands.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the raw arguments to pass to the git command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command to run.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local or working path for git command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="GitVersion" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for git to get the current commit hash.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the raw arguments to pass to the git command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command to run.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CommitHash" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the commit hash.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local or working path for git command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the revision to get the version from. Default is HEAD.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Short" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to abbreviate to a shorter unique name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ChmCompiler" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Html Help 1x compiler task.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExitCode" />
          <xs:attribute name="ProjectFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the project file path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="HxCompiler" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A Html Help 2.0 compiler task.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the log file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoErrorMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no error messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarningMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the project file path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the project root.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="QuiteMode" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating quite mode.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="UncompileDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the uncompile directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UncompileFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the uncompile file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppPoolController" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Allows control for an application pool on a local or remote machine with IIS installed.  The default is 
            to control the application pool on the local machine.  If connecting to a remote machine, you can
            specify the  and  for the task
            to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Action" type="msb:AppPoolControllerActionsType" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the application pool action.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ApplicationPoolName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the app pool.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="AppPoolControllerActionsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Start">
            <xs:annotation>
              <xs:documentation>Start the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Stop">
            <xs:annotation>
              <xs:documentation>Stop the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Restart">
            <xs:annotation>
              <xs:documentation>Restart the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Recycle">
            <xs:annotation>
              <xs:documentation>Recycle the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="AppPoolCreate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Creates a new application pool on a local or remote machine with IIS installed.  The default is 
            to create the new application pool on the local machine.  If connecting to a remote machine, you can
            specify the  and  for the task
            to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ApplicationPoolName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the application pool.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppPoolAutoStart" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppPoolAutoStart property indicates to the World Wide Web Publishing Service (WWW service)
            to automatically start an application pool when the application pool is created or when IIS
            is started, if the value of this property is set to true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppPoolIdentityType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppPoolIdentityType property allows application pools to run as a specific user account:
            
            0 - The application pool runs as NT AUTHORITY\SYSTEM.
            1 - The application pool runs as NT AUTHORITY\LOCAL SERVICE.
            2 - The application pool runs as NT AUTHORITY\NETWORK SERVICE.
            3 - The application pool runs as a specific user account, defined by the  property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppPoolQueueLength" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppPoolQueueLength property indicates to the Universal Listener how many requests
            to queue up for an application pool before rejecting future requests. When the limit
            for this property is exceeded, IIS rejects the additional requests with a 503 error.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AutoShutdownAppPoolExe" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AutoShutdownAppPoolExe property specifies an executable to run when the World Wide Web
            Publishing Service (WWW service) shuts down an application pool for rapid fail protection. You
            can use the  property to send parameters to the executable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AutoShutdownAppPoolParams" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AutoShutdownAppPoolParams property specifies any command-line parameters for the executable that
            is specified in the AutoShutdownAppPoolExe property. You can use these two properties in the following
            way to send e-mail, for example, when the World Wide Web Publishing Service (WWW service) shuts down
            an application pool for rapid fail protection:
            
            AutoShutdownAppPoolExe = "C:\LogAndSendMail.bat"
            AutoShutdownAppPoolParams = "-AppPoolName %1%"
            
            where %1% represents the application pool name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CPUAction" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The CPUAction property configures the action(s) that IIS takes when Microsoft Windows NT ® job objects
            run. Only one Windows NT job object exists per application pool, therefore the CPUAction property
            is configured on a per application pool basis.
            
            Possible values:
            0 - No action is taken except that a warning is written to the event log when the CPU limit is exceeded.
            1 - Application pool worker processes that exceed their CPU limit will be forced to shut down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CPULimit" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The CPULimit property configures the maximum percentage of CPU resources that worker processes
            in an application pool are allowed to consume over a period of time, as indicated by the
             property. Set this property by specifying a percentage of CPU
            usage, multiplied by 1000. For example, if you want the CPU usage limit to be 50%, set CPULimit to 50,000.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CPUResetInterval" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The CPUResetInterval property specifies the reset period (in minutes) for CPU monitoring and
            throttling limits on the application pool. When the number of minutes elapsed since the last
            process accounting reset equals the number specified by this property, IIS will reset the CPU
            timers for both the logging and limit intervals. Setting the value of this property to 0
            disables CPU monitoring.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisallowOverlappingRotation" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The DisallowOverlappingRotation property specifies whether or not the World Wide Web Publishing
            Service (WWW Service) should start up another worker process to replace the existing worker
            process while it is shutting down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisallowRotationOnConfigChange" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The DisallowRotationOnConfigChange property specifies whether or not the World Wide Web Publishing
            Service (WWW Service) should rotate worker processes in an application pool when the configuration
            has changed. This means that the worker processes will not pick up application pool changes to
            values passed to the worker process, such as  and .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IdleTimeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The IdleTimeout property specifies how long (in minutes) a worker process should run idle if no new
            requests are received and the worker process is not processing requests. After the allotted time
            passes, the worker process should request to be shut down by the World Wide Web Publishing Service (WWW Service).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LoadBalancerCapabilities" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The LoadBalancerCapabilities property specifies behavior when a service is unavailable. A setting of 1
            terminates the connection. A setting of 2 sends error code 503.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogEventOnRecycle" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The LogEventOnRecycle property specifies that IIS should log an event when an application pool is
            recycled. Application pools recycle for a variety of reasons. In order for IIS to log the event, the
            LogEventOnRecycle property must have a bit set corresponding to the reason for the recycle.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogonMethod" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The LogonMethod property contains an integer that specifies the logon method for cleartext 
            logons. Valid settings are:
            
            0 for interactive logon.
            1 for batch logon.
            2 for network logon.
            3 for cleartext logon.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MaxProcesses" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The MaxProcesses property determines the maximum number of worker processes an application pool
            allows to service requests for an application pool. This property cannot be set to 0 because there
            are no unmanaged pools.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OrphanActionExe" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The OrphanActionExe property specifies an executable to run when the World Wide Web Publishing
            Service (WWW service) orphans a worker process. You can use the  property
            to send parameters to the executable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OrphanActionParams" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The OrphanActionParams property specifies command-line parameters for the executable
            specified by the  property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OrphanWorkerProcess" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The OrphanWorkerProcess property, when set to true, notifies the World Wide Web Publishing
            Service (WWW Service) not to terminate a worker process that fails to respond to pings, but
            to instead orphan the worker process in the application pool if the worker process suffers
            fatal errors.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartMemory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartMemory property specifies the amount of virtual memory (in KB) that a
            worker process can use before the worker process recycles. The maximum value supported
            for this property is 4,294,967 KB.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartPrivateMemory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartPrivateMemory property specifies the amount of private memory (in KB) that a
            worker process can use before the worker process recycles. The maximum value supported
            for this property is 4,294,967 KB.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartRequests" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartRequests property indicates the number of requests the OOP application
            should process, after which it is recycled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartSchedule" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartSchedule property specifies the time (in 24 hour format) that the application
            will be rotated. Each time is in local time and is specified in the following format:
            
            PeriodicRestartSchedule="hh:mm,hh:mm,hh:mm"</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartTime property specifies the period of time, in minutes, after which IIS
            rotates an isolated OOP application. Setting the value of this property to 0 disables the
            property. The maximum supported value for this property is 71,582.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PingingEnabled" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The PingingEnabled property specifies whether the World Wide Web Publishing Service
            (WWW Service) should periodically monitor the health of a worker process. Setting the
            value of this property to true indicates to the WWW service to monitor the worker
            processes to ensure that the they are running and healthy.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PingInterval" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PingInterval property specifies the period of time (in seconds) between health-monitoring
            pings that the World Wide Web Publishing Service (WWW Service) sends to a worker process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PingResponseTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PingResponseTime property specifies the amount of time (in seconds) that a worker process
            is given to respond to a health monitoring ping. After the time limit is exceeded, the World
            Wide Web Publishing Service (WWW Service) terminates the worker process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RapidFailProtection" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting the RapidFailProtection property to true instructs the World Wide Web Publishing
            Service (WWW service) to put all applications in an application pool out of service if the
            number of worker process crashes has reached the maximum specified by the
             property, within the number of minutes specified
            by the  property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RapidFailProtectionInterval" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The RapidFailProtectionInterval property specifies the number of minutes before the failure
            count for a process is reset. See .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RapidFailProtectionMaxCrashes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The RapidFailProtectionMaxCrashes property specifies the maximum number of failures
            allowed within the number of minutes specified by the  
            property. See .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShutdownTimeLimit" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The ShutdownTimeLimit property specifies the amount of time (in seconds) after a recycle
            threshold has been reached that IIS waits for all old requests to finish running in a worker
            process before terminating the worker process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SMPAffinitized" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting the SMPAffinitized property to true indicates that a particular worker process
            assigned to an application pool should be assigned to a given CPU. This property is used
            in conjunction with the  property to configure a
            particular processor a worker process will be assigned to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SMPProcessorAffinityMask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The SMPProcessorAffinityMask property configures the hexadecimal processor mask. The hexadecimal
            processor mask indicates to which CPU the worker processes in an application pool should be
            bound. Before this property takes affect, the  property must be set
            to true for the application pool. These properties cannot be set through IIS Manager.
            
            Do not set this property to zero. Doing so causes no SMP affinity to be configured, creating an
            error condition. The default DWORD value is 4294967295 (or -1), which is represented in hexadecimal
            as 0xFFFFFFFF. A value of 0xFFFFFFFF in SMPProcessorAffinityMask indicates that all processors are enabled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StartupTimeLimit" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The value of the StartupTimeLimit property specifies the amount of time (in seconds) that the World Wide
            Web Publishing Service (WWW Service) should wait for a worker process to finish starting up and
            reporting to the WWW Service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WAMUserName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The WAMUserName property specifies the account user name that IIS uses by default as the COM+
            application identity for newly created IIS out-of-process applications. The values of this
            property and its companion property, , are set when IIS is installed, and
            match the user name and password values in the Microsoft Windows user account, which is established
            at the same time. Changing the value of this property is not recommended. If you do, change
            it to a valid Windows user account, and change WAMUserPass to the corresponding password
            for the new account.
            
            Important:
            Changes to WAMUserName and WAMUserPass may disrupt the operation of existing IIS out-of-process
            applications. You can synchronize application identities using Component Services to edit the
            user name and password values, found on the Identity tab of the property sheet for each package.
            
            In-process applications are not affected by these property values.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WAMUserPass" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The WAMUserPass property specifies the password for the account that IIS uses by default as the COM+
            application identity for newly created IIS out-of-process applications. The values of this property
            and its companion property, , are set when IIS is installed, and match the
            password and user name values in the Microsoft Windows user account (IWAM_ MachineName, where MachineName
            is the name of the machine on which IIS is installed) established at the same time.
            
            Important:
            Changing the value of this property is not recommended. If you do, you must change the Windows account
            password to the identical value. You must also synchronize existing IIS out-of-process application
            identities, using Component Services to edit the user name and password values, which are found on the
            Identity tab of the property sheet for each package.
            
            In-process applications are not affected by these property values.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppPoolDelete" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Deletes an existing application pool on a local or remote machine with IIS installed.  The default is 
            to delete an existing application pool on the local machine.  If connecting to a remote machine, you can
            specify the  and  for the task
            to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ApplicationPoolName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the application pool.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectoryCreate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Creates a new web directory on a local or remote machine with IIS installed.  The default is 
            to create the new web directory on the local machine.  The physical path is required to already exist
            on the target machine.  If connecting to a remote machine, you can specify the 
            and  for the task to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AccessExecute" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value that indicates if the file
            or the contents of the folder may be executed, regardless of file type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteExecute" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to execute applications
            are denied; only requests from the same computer as the IIS server succeed
            if the AccessExecute property is set to true. You cannot set 
            AccessNoRemoteExecute to false to enable remote requests, and set
             to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteRead" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to view files are denied; only
            requests from the same computer as the IIS server succeed if the 
            property is set to true. You cannot set  to false to enable
            remote requests, and set  to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteScript" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to view dynamic content are denied; only
            requests from the same computer as the IIS server succeed if the  property
            is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, 
            and set  to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteWrite" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to create or change files are denied; only
            requests from the same computer as the IIS server succeed if the  property
            is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, 
            and set  to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessRead" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that the file or the contents of the folder may be read
            through Microsoft Internet Explorer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessScript" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that the file or the contents of the folder may be executed
            if they are script files or static content. A value of false only allows static files, 
            such as HTML files, to be served.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSource" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that users are allowed to access source code if either
            Read or Write permissions are set. Source code includes scripts in Microsoft ® Active
            Server Pages (ASP) applications.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSsl" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that file access requires SSL file permission processing, with
            or without a client certificate.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSsl128" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that file access requires SSL file permission processing
            with a minimum key size of 128 bits, with or without a client certificate.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSslMapCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that SSL file permission processing maps a client certificate
            to a Microsoft Windows ® operating system user-account. The  property
            must also be set to true for the mapping to occur.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSslNegotiateCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that SSL file access processing requests a certificate from
            the client. A value of false indicates that access continues if the client does not have
            a certificate. Some versions of Internet Explorer will close the connection if the server
            requests a certificate and a certificate is not available (even if  
            is also set to true).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSslRequireCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that SSL file access processing requests a certificate from the
            client. If the client provides no certificate, the connection is closed.  
            must also be set to true when using AccessSSLRequireCert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessWrite" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that users are allowed to upload files and their associated
            properties to the enabled directory on your server or to change content in a Write-enabled
            file. Write can be implemented only with a browser that supports the PUT feature of
            the HTTP 1.1 protocol standard.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AnonymousPasswordSync" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AnonymousPasswordSync property indicates whether IIS should handle the user password
            for anonymous users attempting to access resources.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppAllowClientDebug" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppAllowClientDebug property specifies whether ASP client-side debugging
            is enabled. This property is independent of , which
            applies to server-side debugging.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppAllowDebugging" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppAllowDebugging property specifies whether ASP debugging is enabled on
            the server. This property is independent of the  property, 
            which applies to client-side debugging.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspAllowSessionState" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspAllowSessionState property enables session state persistence for the ASP application.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspBufferingOn" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspBufferingOn property specifies whether output from an ASP application will be buffered.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableApplicationRestart" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableApplicationRestart determines whether an ASP application can be
            automatically restarted. When changes are made to Global.asa or metabase properties
            that affect an application, the application will not restart unless the
            AspEnableApplicationRestart property is set to true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableAspHtmlFallback" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableAspHtmlFallback property controls the behavior of ASP when a
            new request is to be rejected due to a full request queue.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableChunkedEncoding" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableChunkedEncoding property specifies whether HTTP 1.1 chunked
            transfer encoding is enabled for the World Wide Web Publishing Service (WWW service).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableParentPaths" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableParentPaths property specifies whether an ASP page allows paths
            relative to the current directory (using the ..\ notation) or above the current directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableTypelibCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableTypelibCache property specifies whether type libraries are cached
            on the server. The World Wide Web Publishing Service (WWW service) setting for
            this property is applicable to all in-process and pooled out-of-process application
            nodes, at all levels. Metabase settings at the Web server level or lower are ignored
            for in-process and pooled out-of-process applications. However, settings at the Web
            server level or lower are used if that node is an isolated out-of-process application.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspErrorsToNTLog" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspErrorsToNTLog property specifies which ASP errors are written to the
            Windows event log. ASP errors are written to the client browser and to the IIS
            log files by default.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspExceptionCatchEnable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspExceptionCatchEnable property specifies whether ASP pages trap exceptions
            thrown by components.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspLogErrorRequests" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspLogErrorRequests property controls whether the Web server writes ASP errors
            to the application section of the Windows event log. ASP errors are written to the
            client browser and to the IIS log files by default.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspScriptErrorMessage" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspScriptErrorMessage property specifies the error message to send to the browser
            if specific debugging errors are not sent to the client (if  
            is set to false).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspScriptErrorSentToBrowser" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspScriptErrorSentToBrowser property specifies whether the Web server writes
            debugging specifics (file name, error, line number, description) to the client
            browser, in addition to logging them to the Windows Event Log. The  
            property provides the error message to be sent if this property is set to false.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspTrackThreadingModel" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspTrackThreadingModel property specifies whether IIS checks the threading model
            of any components (COM objects) that your application creates. The preferred setting
            of this metabase property is false.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthAnonymous" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies Anonymous authentication as one of the possible Windows authentication
            schemes returned to clients as being available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthBasic" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies Basic authentication as one of the possible Windows authentication
            schemes returned to clients as being available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthNtlm" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies Integrated Windows authentication (also known as Challenge/Response or
            NTLM authentication) as one of the possible Windows authentication schemes
            returned to clients as being available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthPersistSingleRequest" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting this flag to true specifies that authentication persists only for a single
            request on a connection. IIS resets the authentication at the end of each request, and
            forces re-authentication on the next request of the session.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthPersistSingleRequestAlwaysIfProxy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting this flag to true specifies that authentication is valid for a single request if
            by proxy. IIS will reset the authentication at the end of the request and force
            re-authentication on the next request if the current authenticated request is by
            proxy of any type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthPersistSingleRequestIfProxy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting this flag to true specifies authentication will persist only across single
            requests on a connection if the connection is by proxy. IIS will reset the authentication
            at the end of the request if the current authenticated request is by proxy and it is
            not the special case where IIS is running MSPROXY.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CacheControlNoCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CacheControlNoCache property specifies the HTTP 1.1 directive to prevent caching of content.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CacheIsapi" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CacheISAPI property indicates whether ISAPI extensions are cached in memory after first use.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ContentIndexed" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The ContentIndexed property specifies whether the installed content indexer should
            index content under this directory tree.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CpuAppEnabled" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] This property specifies whether process accounting and throttling should be performed
            for ISAPI extensions and ASP applications. To perform process accounting on CGI
            applications, use the property .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CpuCgiEnabled" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] This property indicates whether IIS should perform process accounting for CGI
            applications. To effectively throttle CGI applications, use the CgiTimeout
            property. To use process accounting for ISAPI and ASP applications, use .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CreateCgiWithNewConsole" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CreateCGIWithNewConsole property indicates whether a CGI application runs in its own console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CreateProcessAsUser" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CreateProcessAsUser property specifies whether a CGI process is created in the system context or in the context of the requesting user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DefaultDoc" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The DefaultDoc contains one or more file names of default documents that will be returned
            to the client if no file name is included in the client's request. The default document
            will be returned if the  flag of the DirBrowseFlags property
            is set to true for the directory. This property can contain a list of default document
            file names separated by a comma and a space, for example Default.htm, Default.asp.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowDate" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, date information is displayed when browsing directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowExtension" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, file name extensions are displayed when browsing directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowLongDate" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, date information is displayed in extended format when displaying directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowSize" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, file size information is displayed when browsing directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowTime" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, file time information is displayed when displaying directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DontLog" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The DontLog property specifies whether client requests are written to the IIS log files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableDefaultDoc" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, the default document (specified by the  property) for
            a directory is loaded when the directory is browsed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableDirBrowsing" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, directory browsing is enabled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableDocFooter" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The EnableDocFooter property enables or disables custom footers specified by
            the DefaultDocFooter property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableReverseDns" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The EnableReverseDns property enables or disables reverse Domain Name Server (DNS) lookups
            for the World Wide Web Publishing Service (WWW service). Reverse lookups involve looking
            up the domain name when the IP address is known. Reverse DNS lookups can use significant
            resources and time.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SsiExecDisable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The SSIExecDisable property specifies whether server-side include (SSI) #exec directives
            are disabled under this path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UncAuthenticationPassthrough" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The UNCAuthenticationPassthrough property enables user authentication passthrough
            for Universal Naming Convention (UNC) virtual root access (for authentication schemes
            that support delegation).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryPhysicalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the virtual directory physical path.  The physical directory must
            exist before this task executes.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectoryDelete" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Deletes a web directory on a local or remote machine with IIS installed.  The default is 
            to delete the web directory on the local machine.  If connecting to a remote machine, you
            can specify the  and  for the
            task to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectoryScriptMap" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Sets an application mapping for a filename extension on an existing web directory.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="EnableScriptEngine" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Set to true when you want the application to run in a directory without Execute permissions.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExecutablePath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The full path to the executable used to respond to requests for a Uri ending with</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Extension" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The filename extension that will be mapped to an executable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MapToAspNet" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Indicates whether  should be mapped to the ASP.NET runtime.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbs" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A comma-separated list of the HTTP verbs to include in the application mapping.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VerifyFileExists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Set to true to instruct the Web server to verify the existence of the requested script file and to ensure that the requesting user has access permission for that script file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectorySetting" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads and modifies a web directory configuration setting.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="HostHeaderName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets host header. Used when you have more than one website in IIS that have the same port but different host headers.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SettingName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the configuration setting to read or modify.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SettingValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the value of  on the web directory</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ILMerge" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A wrapper for the ILMerge tool.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AllowDuplicateTypes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the names of public types
            to be renamed when they are duplicates.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AllowZeroPeKind" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to treat an assembly 
            with a zero PeKind flag 
            (this is the value of the field listed as .corflags in the Manifest)
            as if it was ILonly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AttributeFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the attribute assembly
            from whre to get all of the assembly-level attributes
            such as Culture, Version, etc.
            It will also be used to get the Win32 Resources from.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Closed" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether 
            to augment the list of input assemblies
            to its "transitive closure".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CopyAttributes" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether 
            to copy the assembly level attributes
            of each input assembly over into the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DebugInfo" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether 
            to preserve any .pdb files
            that are found for the input assemblies
            into a .pdb file for the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DelaySign" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether 
            the target assembly will be delay signed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the file
            that will be used to identify types
            that are not to have their visibility modified.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="InputAssemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the input assemblies to merge.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Internalize" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether whether types in assemblies other than the primary assembly have their visibility modified.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="KeyFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the .snk file
            to sign the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a log file
            to write log messages to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PublicKeyTokens" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether 
            external assembly references in the manifest
            of the target assembly will use public keys (false)
            or public key tokens (true).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SearchDirectories" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the directories to be used to search for input assemblies.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetKind" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the indicator
            whether the target assembly is created as a library (Dll),
            a console application (Exe) or as a Windows application (WinExe).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetPlatformDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the directory in which mscorlib.dll is to be found.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetPlatformVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the .NET framework version for the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the version number of the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlDocumentation" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether 
            to merge XML documentation files
            into one for the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="InnoSetup" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task to create installer with InnoSetup</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExitCode" />
          <xs:attribute name="OutputFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specify output filename</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specify output path</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Quiet" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Quiet compile</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ScriptFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Filename of Inno Setup script (.iss)</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="InstallAssembly" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Installs assemblies.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AssemblyFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their filename.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyNames" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their assembly name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file to write installation progress to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShowCallStack" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] If an exception occurs at any point during installation, the call
             stack will be printed to the log.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="UninstallAssembly" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uninstalls assemblies.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AssemblyFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their filename.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyNames" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their assembly name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file to write installation progress to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShowCallStack" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] If an exception occurs at any point during installation, the call
             stack will be printed to the log.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="JSCompress" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Compresses JavaScript source by removing comments and unnecessary 
            whitespace. It typically reduces the size of the script by half, 
            resulting in faster downloads and code that is harder to read.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="CompressedFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the files that were successfully source-compressed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Encoding" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Encoding to use to read and write files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the files to source-compress.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Mail" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Sends an email message</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Attachments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of files to attach to message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Bcc" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of addresss that contains the blind carbon copy (BCC) recipients for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Body" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The email message body</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CC" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of addresss that contains the carbon copy (CC) recipients for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableSsl" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specify whether the Mail task uses SSL to encrypt the connection.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="From" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The from address for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IsBodyHtml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value indicating whether the mail message body is in Html</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Priority" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The priority of this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SmtpServer" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name or IP address of the host used for SMTP transactions</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Subject" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The subject line for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="To" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>List of addresss that contains the recipients of this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Add" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Add numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Divide" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Divide numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TruncateResult" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When , uses integer division to truncate the result. Default is</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Modulo" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Performs the modulo operation on numbers.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Multiple" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Multiple numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subtract" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subtract numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Merge" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Merge files into the destination file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DestinationFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the destination file where the
             are merged to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Mode" type="msb:MergeModesType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the mode to use when merging.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceFiles" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the source files to merge.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="MergeModesType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Binary">
            <xs:annotation>
              <xs:documentation>
            Merges files as binary data.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Text">
            <xs:annotation>
              <xs:documentation>
            Merges files as text.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="TextLine">
            <xs:annotation>
              <xs:documentation>
            Merges files as text line by line.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="Move" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Moves files on the filesystem to a new location.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DestinationFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the list of files to moved the source files to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DestinationFolder" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the directory to which you want to move the files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MovedFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the items that were successfully moved.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceFiles" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the source files to move.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="NDoc" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Runs the NDoc application.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Documenter" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the documenter.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="ProjectFilePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the project file path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the output is verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="HttpRequest" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Makes an HTTP request, optionally validating the result and writing it to a file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="EnsureResponseContains" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Optional: if set then the task fails if the response text doesn't contain the text specified.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FailOnNon2xxResponse" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Default is true.  When true, if the web server returns a status code less than 200 or greater than 299 then the task fails.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Url" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The URL to make an HTTP request against.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WriteResponseTo" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Optional; the name of the file to write the response to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="NuGetPack" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Creates a NuGet package based on the specified nuspec or project file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="BasePath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The base path of the files defined in the nuspec file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="File" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The location of the nuspec or project file to create a package.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the directory for the created NuGet package.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Symbols" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines if a package containing sources and symbols should be created. When specified with a nuspec, 
            creates a regular NuGet package file and the corresponding symbols package.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Shows verbose output for package building.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Overrides the version number from the nuspec file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="NuGetPush" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Pushes a package to the server and optionally publishes it.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="APIKey" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The API key to use for push to the server.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CreateOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies if the package should be created and uploaded to the server but not published to the server. False by default.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="File" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the package to push the package to the server.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Source" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the server URL.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="NUnit" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Run NUnit 2.4 on a group of assemblies.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the assemblies.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisableShadowCopy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether assemblies are copied to a shadow folder during testing.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ErrorOutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file to receive test error details.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeCategory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the categories to exclude.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Fixture" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the fixture.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Force32Bit" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether the tests are run in a 32bit process on a 64bit OS.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Framework" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines the framework to run aganist.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeCategory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the categories to include.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputXmlFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the output XML file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectConfiguration" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The project configuration to run.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TestInNewThread" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Allows tests to be run in a new thread, allowing you to take advantage of ApartmentState and ThreadPriority settings in the config file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XsltTransformFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the XSLT transform file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AddTnsName" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Defines a database host within the Oracle TNSNAMES.ORA file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AllowUpdates" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When true, the task will update an existing entry with . 
            If false, the task will fail if  already exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EntryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the host entry to add.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EntryText" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The definition of the host entry to add.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ModifiedFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The path to the TNSNAMES.ORA that was used by task.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ModifiedFileText" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The contents of the TNSNAMES.ORA file after the task executes.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OriginalFileText" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The contents of the TNSNAMES.ORA file before any changes are made.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TnsNamesFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The path to a specific TNSNAMES.ORA file to update.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Prompt" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Displays a message on the console and waits for user input.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Text" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The message to display in the console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserInput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The text entered at the console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegexCompiler" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Compiles regular expressions and saves them to disk in an assembly.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AssemblyCompany" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly company.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCopyright" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly copyright.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCulture" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly culture.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyDescription" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly description.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyFileVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly file version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyInformationalVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly informational version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyKeyFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly key file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the assembly to be created by the regex compiler.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyProduct" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly product.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyTitle" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly title.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IsPublic" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the default value is public for regular expression instances.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Namespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default namespace for regular expression instances.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Options" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default regular expression options.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputDirectory" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the directory where the assembly will be saved.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RegularExpressions" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the regular expressions.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RegularExpressionsFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the file defining the regular expressions.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegexMatch" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task to filter an Input list with a Regex expression.
            Output list contains items from Input list that matched given expression</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Expression" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Regex expression</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Input" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Input, list of items to perform the regex on</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Options" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Regex options as strings corresponding to the RegexOptions enum:
                Compiled
                CultureInvariant
                ECMAScript 
                ExplicitCapture
                IgnoreCase
                IgnorePatternWhitespace
                Multiline
                None
                RightToLeft
                Singleline</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Results of the Regex transformation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegexReplace" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task to replace portions of strings within the Input list
            Output list contains all the elements of the Input list after
            performing the Regex Replace.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Count" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Number of matches to allow on each input item.
            -1 indicates to perform matches on all matches within input item</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Expression" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Regex expression</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Input" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Input, list of items to perform the regex on</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Options" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Regex options as strings corresponding to the RegexOptions enum:
                Compiled
                CultureInvariant
                ECMAScript 
                ExplicitCapture
                IgnoreCase
                IgnorePatternWhitespace
                Multiline
                None
                RightToLeft
                Singleline</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Results of the Regex transformation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Replacement" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] String replacing matching expression strings in input list.
            If left empty matches in the input list are removed (replaced with empty string)</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StartAt" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Position within the input item to start matching</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegistryRead" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads a value from the Registry</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DefaultValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="KeyName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the full registry path of the key, beginning with a valid registry root, such as "HKEY_CURRENT_USER".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the stored value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ValueName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the name/value pair.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegistryWrite" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Writes a value to the Registry</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="KeyName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the full registry path of the key, beginning with a valid registry root, such as "HKEY_CURRENT_USER".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the value to be stored.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ValueName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the name/value pair.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RoboCopy" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task wrapping the Window Resource Kit Robocopy.exe command.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AllSubdirectories" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /E	Copies all subdirectories (including empty ones).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppendLogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /LOG+:file	Redirects output to the specified file, appending it to the file if it already exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="BackupMode" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /B	Copies files in Backup mode (Backup copies are not restartable, but can copy some files that restartable mode cannot).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CopyAll" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /COPYALL	Copies Everything. Equivalent to /COPY:DATSOU.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CopyFlags" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /COPY:copyflags Copies the file information specified by copyflags.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Create" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /CREATE	Creates a directory tree structure containing zero-length files only (that is, no file data is copied).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DestinationFolder" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Destination directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /XF file [file]	Excludes files with the specified names, paths, or wildcard characters.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeFolders" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /XD dir [dir]	Excludes directories with the specified names, paths, or wildcard characters.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeJunctions" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /XJ	Excludes Junction points.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcluedAttributes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /XA:{R|A|S|H|C|N|E|T|O} Excludes files with the specified attributes.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="FatFileNames" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /FAT 	Creates destination files using only 8.3 FAT file names.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FatFileTimes" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /FFT	Assume FAT File Times (2-second granularity).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeArchive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /A	Copies only files with the archive attribute set.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeArchiveClear" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /M	Copies only files with the archive attribute set and then resets (turns off) the archive attribute in the source files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeAttributes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /IA:{R|A|S|H|C|N|E|T|O} Includes files with the specified attributes.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] /LOG:file	Redirects output to the specified file, overwriting the file if it already exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Mirror" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /MIR	Mirrors a directory tree (equivalent to running both /E and /PURGE).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Move" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /MOVE	Moves files and directories (that is, deletes source files and directories after copying).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MoveFiles" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /MOV	Moves files (that is, deletes source files after copying).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoCopy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /NOCOPY	Copies Nothing. Can be useful with /PURGE.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoFileLogging" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /NFL 	Turns off logging of file names. File names are still shown, however, if file copy errors occur.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoFolderLogging" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /NDL 	Turns off logging of directory names. Full file pathnames (as opposed to simple file names) will be shown if /NDL is used.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoJobHeader" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /NJH	Turns of logging of the job header.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoJobSummary" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /NJS	Turns off logging of the job summary.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoProgress" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /NP 	Turns off copy progress indicator (% copied).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Options" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Manually entered options.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Purge" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /PURGE	Deletes destination files and directories that no longer exist in the source.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RestartableMode" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /Z	Copies files in restartable mode (that is, restarts the copy process from the point of failure).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Security" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /SEC	Copies NTFS security information. (Source and destination volumes must both be NTFS). Equivalent to /COPY:DATS.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Names of files to act upon.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceFolder" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Source directory</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Subdirectories" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /S	Copies subdirectories (excluding empty ones).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] /V 	Produces verbose output (including skipped files).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="BuildAssembler" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>BuildAssembler task for Sandcastle.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ConfigFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the configuration file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="ManifestFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the manifest file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarnMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the sandcastle install root directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ChmBuilder" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>ChmBuilder task for Sandcastle.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExitCode" />
          <xs:attribute name="HtmlDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the HTML directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LanguageId" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the language id.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Metadata" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is metadata.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarnMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the project.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the sandcastle install root directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="TocFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the toc file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="DBCSFix" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>DBCSFix task for Sandcastle.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ChmDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the CHM directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LanguageId" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the language id.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarnMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the sandcastle install root directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="MRefBuilder" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MRefBuilder task for Sandcastle.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the assemblies.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConfigFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the config file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="IncludeInternal" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to include internal members.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarnMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="References" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the references.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the sandcastle install root directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sandcastle" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>The Sandcastle task.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the assemblies.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ChmName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the CHM.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Clean" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether working directory is cleaned.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Comments" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the comments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HxName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating a Html Help 2x project will be created.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LanguageId" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the language id.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarnMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="References" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the references.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleConfig" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the build assembler config file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the sandcastle install root directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TopicStyle" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the html help topic style.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XslTransform" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>XslTransform task for Sandcastle.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="NoInfoMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no info messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoWarnMessages" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether no warning messages will be output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SandcastleRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the sandcastle install root directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="XmlFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the XML files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XsltFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the XSLT files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="TaskSchema" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A Task that generates a XSD schema of the tasks in an assembly.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the list of  path to analyse.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="BuildEngine" />
          <xs:attribute name="CreateTaskList" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating if the task list (using UsingTask)
            has to be genereted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HostObject" />
          <xs:attribute name="IgnoreDocumentation" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating wheter documentation should be ignored
            even if available (Default is false).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IgnoreMsBuildSchema" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating if the 
            MsBuild schema inclusing should be ignored</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Includes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a list of included schemas</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Log" />
          <xs:attribute name="OutputPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the output path for the generated files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Schemas" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the list of path to the generated XSD schema.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TaskListAssemblyFormat" type="msb:TaskListAssemblyFormatTypeType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating how the assembly is specified in the
            UsingTask element.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TaskLists" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the path to the task list if it was generated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="TaskListAssemblyFormatTypeType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="AssemblyFileName">
            <xs:annotation>
              <xs:documentation>
            Assembly file name (Default): &lt;UsingTask AssemblyFile="foo.dll" /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="AssemblyFileFullPath">
            <xs:annotation>
              <xs:documentation>
            Assembly location: &lt;UsingTask AssemblyName="foo" /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="AssemblyName">
            <xs:annotation>
              <xs:documentation>
            Assembly Name: &lt;UsingTask AssemblyFile="bin\debug\foo.dll" /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="AssemblyFullName">
            <xs:annotation>
              <xs:documentation>
            Assembly fully qualified name: &lt;UsingTask AssemblyName="foo.dll,version ...." /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="Script" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Executes code contained within the task.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Code" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The code to compile and execute</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Imports" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The namespaces to import.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Language" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The language of the script block (defaults to C#).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MainClass" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The name of the main class containing the static ScriptMain 
            entry point.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="References" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The required references</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReturnValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The string returned from the custom ScriptMain method.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ServiceController" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that can control a Windows service.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Action" type="msb:ServiceActionsType" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the  to perform on the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanPauseAndContinue" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be paused and resumed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanShutdown" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service should be notified when the system is shutting down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanStop" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be stopped after it has started.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisplayName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a friendly name for the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Exists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MachineName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Status" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the status.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the timeout for the command. The default is
            one minute.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="ServiceActionsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Start">
            <xs:annotation>
              <xs:documentation>
            Starts a service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Stop">
            <xs:annotation>
              <xs:documentation>
            Stops a service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Restart">
            <xs:annotation>
              <xs:documentation>
            Restarts a service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Pause">
            <xs:annotation>
              <xs:documentation>
            Pauses a running service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Continue">
            <xs:annotation>
              <xs:documentation>
            Continues a paused service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="ServiceQuery" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that can determine the status of a specified service
            on a target server.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="CanPauseAndContinue" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be paused and resumed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanShutdown" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service should be notified when the system is shutting down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanStop" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be stopped after it has started.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisplayName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a friendly name for the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Exists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MachineName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Status" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the status.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sleep" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for sleeping for a specified period of time.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Hours" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of hours to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Milliseconds" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of milliseconds to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Minutes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of minutes to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Seconds" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of seconds to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sound" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task to play a sound from a .wav file path or URL.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="LoadTimeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the time, in milliseconds, in which the .wav file must load.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MyMusicFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Sets the file path of the .wav file to load
            as a relative path to .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SoundLocation" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the file path or URL of the .wav file to load.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Synchron" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to play the sound synchronously.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SystemSoundFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Sets the file path of the .wav file to load
            as a relative path to .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="PdbStr" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for the pdbstr from source server.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Command" type="msb:PdbStrCommandsType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="PdbFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the PDB file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StreamFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the stream file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StreamName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the stream.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="PdbStrCommandsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="read">
            <xs:annotation>
              <xs:documentation>
            Read stream from pdb symbol file.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="write">
            <xs:annotation>
              <xs:documentation>
            Write stream to pdb symbol file.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="SrcTool" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for the srctool from source server.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="CountOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to get the count of indexed files. The -c switch.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Extract" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to extracts the files, instead of simply listing them. The -x switch.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExtractDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the directory to extract to. The -d switch.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExtractedFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the extracted files. Populated when  is true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Filter" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the filter to only source files that match this regular expression. The -l switch.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PdbFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the PDB file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceCount" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the number of source files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the source files. Populated when  is true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to dumps raw source data from the PDB. The -r switch.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnSourceIndex" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A subversion source index task.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="SourceCommandFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the source command format. The SRCSRVCMD environment variable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceServerName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the source server.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceServerSdkPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the source server SDK path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceTargetFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the source target format. The SRCSRVTRG environment variable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SymbolFiles" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the symbol files to have to source index added.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SqlExecute" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Executes a SQL command.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Command" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The command to execute</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CommandTimeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Command Timeout</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConnectionString" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The connection string</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file name to write to</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Output the return count/value</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SelectMode" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The SQL Selection Mode.  Set to NonQuery, Scalar, or ScalarXml.  Default is NonQuery.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ExecuteDDL" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task to execute DDL and SQL statements.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="BatchSeparator" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the batch delimter string.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConnectionString" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The connection string</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the DDL/SQL files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Results" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Output the return count/values</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StatementTimeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Timeout to execute a DDL statement.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SqlPubWiz" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>The Database Publishing Wizard enables the deployment of
            SQL Server databases (both schema and data) into a shared
            hosting environment.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the database publishing command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConnectionString" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the full connection string to the local database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Database" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the local database to be scripted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DataOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the data but 
            not the schema should be scripted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="HosterName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the friendly name of previously
            configured hosting Web service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoDropExisting" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the produced 
            script should not drop pre-existing objects.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoSchemaQualify" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether objects will
            not be qualified with a schema.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoTransaction" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the publish operation
            should not be executed within a single transaction.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the full file path for the script file generated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password to use for connection
            to the source database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Quiet" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating output message suppression.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SchemaOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the schema, 
            but not the data, should be scripted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Server" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name or IP address for the local database connection.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceDatabase" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the remote database server name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceDatabaseServer" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the database name to publish to on the remote server.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServicePassword" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the remote Web service endpoint.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceUsername" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username on the hosting Web service endpoint.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetServer" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target server the script should target.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the SQL Server user name to use for connection
            to the source database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WebServiceAddress" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the configuration of the hosting Web service endpoint.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnCheckout" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Checkout a local working copy of a Subversion repository.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnClient" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion client base class</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnCommit" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion Commit command</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnCopy" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Copy a file or folder in Subversion</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DestinationPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The path to which the SourcePath should be copied</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourcePath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The path of the source file or folder that should be copied</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnExport" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Export a folder from a Subversion repository</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnInfo" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Run the "svn info" command and parse the output</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastChangedAuthor" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The author who last changed this node.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastChangedDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The date this node was last changed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastChangedRevision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The last changed revision number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NodeKind" type="msb:NodeKindType">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The Subversion node kind.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Return the repository root or null if not set by Subversion.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryUuid" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Return the repository UUID value from Subversion.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Schedule" type="msb:ScheduleType">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The Subversion schedule type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="NodeKindType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="file">
            <xs:annotation>
              <xs:documentation>
            Node is a file
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="dir">
            <xs:annotation>
              <xs:documentation>
            Node is a directory
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="unknown">
            <xs:annotation>
              <xs:documentation>
            Unknown node type
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="ScheduleType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="normal">
            <xs:annotation>
              <xs:documentation>
            Normal schedule
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="unknown">
            <xs:annotation>
              <xs:documentation>
            Unknown schedule.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="SvnStatus" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion status command.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Entries" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the entries.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion Update command</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MessageFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoAuthCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating no auth cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NonInteractive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the command is non interactive].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardError" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the error output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StandardOutput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the output of SVN command-line client.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the target file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TrustServerCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to trust the server cert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating the output is XML.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnVersion" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Summarize the local revision(s) of a working copy.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Exported" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] True if invoked on a directory that is not a working copy, 
            svnversion assumes it is an exported working copy and prints "exported".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HighRevision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] High revision number of the local working repository revision range.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Path to local working copy.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LowRevision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Low revision number of the local working repository revision range.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Modifications" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] True if working copy contains modifications.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Revision number of the local working repository.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Switched" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] True if working copy is switched.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="UseLastCommittedRevision" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies whether to use the last committed revision number as
            opposed to the last updated revision number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SymStore" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that wraps the Symbol Server SymStore.exe application.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Append" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating SymStore will append new indexing information to an existing index file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="msb:SymStoreCommandsType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the comment for the transaction.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Compress" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating SymStore will create a compressed version of each file copied to the symbol store instead of using an uncompressed copy of the file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Files" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the network path of files or directories to add.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ID" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the transaction ID string.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Local" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the file will be in a local directory rather than a network path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a log file to be used for command output. If this is not included, transaction information and other output is sent to stdout.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message to be added to each file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NoReference" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to omit the creation of reference pointer files for the files and pointers being stored.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Pointer" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether SymStore will store a pointer to the file, rather than the file itself.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Product" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the product.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReadIndex" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the index file. Causes SymStore to read the data from a file created with WriteIndexFile.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether SymStore will add files or directories recursively.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Relative" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the paths in the file pointers will be relative.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Share" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server and share where the symbol files were originally stored.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Store" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the root directory for the symbol store.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether SymStore will display verbose output.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the version of the product.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WriteIndex" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the index file. Causes SymStore not to store the actual symbol files. Instead, SymStore records information in the IndexFile that will enable SymStore to access the symbol files at a later time.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="SymStoreCommandsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="add">
            <xs:annotation>
              <xs:documentation>
            Add to the symbol server store.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="query">
            <xs:annotation>
              <xs:documentation>
            Query the symbol server store.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="delete">
            <xs:annotation>
              <xs:documentation>
            Delete from the symbol serer store.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="TemplateFile" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task that replaces tokens in a template file and writes out a new file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The token replaced template file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFilename" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The full path to the output file name.  If no filename is specified (the default) the
            output file will be the Template filename with a .out extension.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Template" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The template file used.  Tokens with values of ${Name} are replaced by name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Tokens" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of tokens to replace in the template.  Token name is taken from the TaskItem.ItemSpec and the
            replacement value comes from the ReplacementValue metadata of the item.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="TfsClient" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for Team Foundation Server version control.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="All" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is all.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Author" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the author.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Bypass" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is bypass.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Changeset" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the changeset.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Collection" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the collection.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the Team Foundation Server command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the comment.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Files" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Format" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Lock" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the lock.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Notes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the notes.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Override" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is override.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Overwrite" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is overwrite.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Preview" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is preview.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is recursive.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Remap" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is remap.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Saved" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is saved.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the server path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShelveSetName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the shelve set.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShelveSetOwner" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the shelve set owner.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Silent" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is silent.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Type" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Validate" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is validate.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkspaceName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the workspace.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkspaceOwner" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the workspace owner.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Time" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Gets the current date and time.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DateTimeValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets the internal time value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Day" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the day of the month represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DayOfWeek" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the day of the week represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DayOfYear" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the day of the year represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Format" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the format string
            for output parameter .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FormattedTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent string representation.
            If input parameter  is provided,
            the value is formatted according to it.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Hour" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the hour component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Kind" type="msb:DateTimeKindType">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets a value that indicates whether the time represented by this instance is based
            on local time, Coordinated Universal Time (UTC), or neither.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LongDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent long date string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LongTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent long time string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Millisecond" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the milliseconds component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Minute" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the minute component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Month" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the month component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Second" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the seconds component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShortDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent short date string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShortTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent short time string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Ticks" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the number of ticks that represent the date and time of this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TimeOfDay" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the time of day for this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Year" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the year component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DateTimeKindType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Unspecified" />
          <xs:enumeration value="Utc" />
          <xs:enumeration value="Local" />
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="Unzip" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Unzip a file to a target directory.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExtractedFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the files extracted from the zip.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Overwrite" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to overwrite any existing files on extraction. Defaults to true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetDirectory" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the target directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ZipFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the zip file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="User" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Provides information about the build user.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DomainName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the domain name of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Email" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the email address of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FirstName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the first name of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FullName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the full name of the build user in "[First name] [Middle initial]. [Last name]" format .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the last name of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MiddleInitial" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the middle initial of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Phone" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the phone number of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the user name of the build user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserNameWithDomain" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the username and domain name of the build user in "[Domain name]\[User name]" format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Version" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Generates version information based on various algorithms</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Build" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the build version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="BuildType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the method used to generate a  number</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Major" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the major version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MajorType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the method used to generate a  number</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Minor" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the minor version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MinorType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the method used to generate a  number</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RevisionType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the method used to generate a  number</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StartDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the starting date used to calculate the  number when  is Automatic.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VersionFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the file used to initialize and persist the version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDownload" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Downloads a resource with the specified URI to a local file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Domain" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The domain of the user being used to authenticate against the remote web server. A value for  must also be provided.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the local file that is to receive the data.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FileUri" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the URI from which to download data.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password used to authenticate against the remote web server. A value for  must also be provided.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UseDefaultCredentials" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When true, the current user's credentials are used to authenticate against the remote web server</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The username used to authenticate against the remote web server</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlMassUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Performs multiple updates on an XML file</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ContentFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The original file whose content is to be updated</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ContentPathUsedByTask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The full path of the file containing content updated by the task</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ContentRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The XPath expression identifying root node that substitions are relative to</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MergedFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file created after performing the updates</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MergedPathUsedByTask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The full path of the file containing the results of the task</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NamespaceDefinitions" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A collection of prefix=namespace definitions used to query the XML documents</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SubstitutionsFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file containing the list of updates to perform</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SubstitutionsPathUsedByTask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The full path of the file containing substitutions used by the task</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SubstitutionsRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The XPath expression used to locate the list of substitutions to perform</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UpdateControlNamespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The namespace used for XmlMassUpdate pre-defined attributes</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlQuery" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads a value or values from lines of XML</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Lines" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The lines of a valid XML document</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NamespaceDefinitions" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A collection of prefix=namespace definitions used to query the XML document</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReservedMetaDataPrefix" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The string that is prepended to all reserved metadata properties.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Values" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The values selected by</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ValuesCount" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The number of values returned in</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of an XML file to query</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The query used to identify the values in the XML document</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlRead" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads a value from a XML document using a XPath.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Namespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default namespace.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Prefix" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the prefix to associate with the namespace being added.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value read from file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the XML file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the XPath.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Updates a XML document using a XPath.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Delete" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the matched node is deleted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Namespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default namespace.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Prefix" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the prefix to associate with the namespace being added.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the value to write.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the XML file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the XPath.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Xslt" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task to merge and transform a set of xml files.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Inputs" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the xml input files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the path of the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RootAttributes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the list of
            semicolon-delimited name/value pairs
            of the .
            For example: RootAttributes="foo=bar;date=$(buildDate)"</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RootTag" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the xml tag name
            of the root tag wrapped
            around the merged xml input files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xsl" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the path of the
            xsl transformation file to apply.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Zip" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Create a zip file with the files specified.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the comment.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Encryption" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the encryption algorithm.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the files to zip.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Flatten" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is flatten.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory for the zip file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ZipFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the zip file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ZipLevel" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the zip level. Default is 6.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
</xs:schema>