Exemple #1
0
        /// <summary>
        /// Extracts a zipped template, and merges better info from another vstemplate file, then rezips the file
        /// C:\Users\dkhen\Documents\Visual Studio 2010\My Exported Templates
        /// </summary>
        /// <param name="zipFile"></param>
        void FixTemplate(string zipFile, bool isItemTemplate)
        {
            var vsTemplateFilename = "MyTemplate.vstemplate";
            var dir = SevenZipHelper.ExtractToDir(zipFile);

            vsTemplateFilename = Path.Combine(dir, vsTemplateFilename);
            var        doc1 = XDocument.Load(vsTemplateFilename);
            var        doc2 = XDocument.Load(@"C:\Projects\SharpKit\trunk\src\SharpKit.Release\VSTemplates10\" + Path.GetFileNameWithoutExtension(zipFile) + ".vstemplate");
            XNamespace xn   = "http://schemas.microsoft.com/developer/vstemplate/2005";
            var        el1  = doc1.Root.Element(xn + "TemplateData");
            var        el2  = doc2.Root.Element(xn + "TemplateData");

            foreach (var ch2 in el2.Elements())
            {
                var ch1 = el1.Element(ch2.Name);
                ch1.Value = ch2.Value;
            }
            doc1.Save(vsTemplateFilename);
            FileHelper.DeleteFileIfExists(zipFile + ".bak");
            File.Move(zipFile, zipFile + ".bak");
            SevenZipHelper.ZipDirectory(dir, zipFile);
            Directory.Delete(dir, true);

            var newZipFile = el1.Element(xn + "Name").Value + ".zip";

            var zipDir = @"C:\Projects\SharpKit\trunk\src\SharpKit.Release\VSTemplates10\ProjectTemplates\";

            if (isItemTemplate)
            {
                zipDir = zipDir.Replace("ProjectTemplates", "ItemTemplates");
            }
            newZipFile = Path.Combine(zipDir, newZipFile);

            File.Copy(zipFile, newZipFile, true);
        }