anchor.diff:                      file "Global.asax"
                       file "Main.html"
                       file "Setup.fsx"
  -                ])
  -                .ReplaceParameters()
  -        makeProjectTemplate com meta project
  -
  -    let getBundleSiteTemplate com =
  -        let dir = com.Config.RootPath +/ "templates" +/ "bundle-website"
  -        let meta =
  -            "Creates an empty single-page HTML application."
  -            |> makeTemplateMetadata com "Single-Page Application" "SinglePageApplication"
  -        let file name =
  -            let i = VST.ProjectItem.FromTextFile(dir +/ name).ReplaceParameters()
  -            VST.FolderElement.Nested(i)
  -        let project =
  -            VST.Project.FromFile(dir +/ "SinglePageApplication.fsproj",
  +                ]
  +        }
  +
  +    let siteletsHtmlTemplate =
  +        {
  +            Name = "HTML Application"
  +            PathName = "sitelets-html"
  +            DefaultProjectName = "HtmlApplication"
  +            Description =
  +                "Creates a starter sitelet-based HTML application."
  +            ProjectFile = "HtmlApplication.fsproj"
  +            Files = fun file folder ->
                   [
                       file "Client.fs"
                       file "Main.fs"
  -                    file "Web.config"
  -                    file "Global.asax"
  -                    file "index.html"
  -                ])
  -                .ReplaceParameters()
  -        makeProjectTemplate com meta project
  -
  -    let getSiteletsHtmlTemplate com =
  -        let dir = com.Config.RootPath +/ "templates" +/ "sitelets-html"
  -        let meta =
  -            "Creates a starter sitelet-based HTML application."
  -            |> makeTemplateMetadata com "HTML Application" "HtmlApplication"
  -        let file repl name =
  -            let i = VST.ProjectItem.FromTextFile(dir +/ name).ReplaceParameters()
  -            VST.FolderElement.Nested(i)
  -        let project =
  -            VST.Project.FromFile(dir +/ "HtmlApplication.fsproj",
  -                [
  -                    file true "Client.fs"
  -                    file true "Main.fs"
  -                    file false "extra.files"
  -                    file false "Main.html"
  -                ])
  -                .ReplaceParameters()
  -        makeProjectTemplate com meta project
  -
  -    let getSiteletsHostTemplate com =
  -        let dir = com.Config.RootPath +/ "templates" +/ "sitelets-host"
  -        let meta =
  -            "Creates a C#-based web project for hosting WebSharper sitelets in a web server."
  -            |> makeTemplateMetadata com "ASP.NET Container" "Web"
  -        let file name =
  -            VST.ProjectItem.FromTextFile(dir +/ name).ReplaceParameters()
  -            |> VST.FolderElement.Nested
  -        let folder name xs =
  -            let f = VST.Folder.Create(name, xs)
  -            VST.FolderElement.Folder(f)
  -        let project =
  -            VST.Project.FromFile(dir +/ "Web.csproj",
  +                    file "extra.files"
  +                    file "Main.html"
  +                ]
  +        }
  +
  +    let siteletsHostTemplate =
  +        {
  +            Name = "ASP.NET Container"
  +            PathName = "sitelets-host"
  +            DefaultProjectName = "Web"
  +            Description =
  +               "Creates a C#-based web project for hosting WebSharper sitelets in a web server."
  +            ProjectFile = "Web.csproj"
  +            Files = fun file folder ->
                   [
                       folder "Properties" [
                           file "Properties/AssemblyInfo.cs"
                       ]
                       file "Main.html"
                       file "Web.config"
  -                ])
  -                .ReplaceParameters()
  -        makeProjectTemplate com meta project
  +                ]
  +        }
   
       let getWebSharperExtension com =
           let desc = getExtensionDecription ()
  
positive.code:         let vsix =
              VX.Vsix.Create(identifier,
                  [
                      proj (getLibraryTemplate com)
                      proj (getExtensionTempalte com)
                      proj (getBundleSiteTemplate com)
                      proj (getSiteletsWebsiteTemplate com)
                      proj (getSiteletsHtmlTemplate com)
                      proj (getSiteletsHostTemplate com)
                  ])
          VX.VsixFile.Create(Path.GetFileName(com.Config.VsixPath), vsix)
  
      let BuildVsixFile cfg =
  
negative.code:     let getIdentity () =
          VST.ExtensionIdentity.Create(getExtensionName (), getExtensionGuid ())
  
      type TemplateDef =
          {
              PathName : string
              Name : string
              DefaultProjectName : string
              Description : string
              ProjectFile : string
              Files :
                  (string -> Templates.FolderElement)
                  -> (string -> Templates.FolderElement list -> Templates.FolderElement)
                  -> Templates.FolderElement list
          }
  
      let makeProjectTemplate com meta project =
          let identity = getIdentity ()
          let c = Content.ReadBinaryFile(com.Config.NuPkgPath)
  