/// <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); }