public override bool Execute() { string outputFileName = String.Format("{0}.area-manifest.xml", AreaName); string outputFullPath = Path.Combine(ManifestPath, outputFileName); AreaInfo info = new AreaInfo() { Name = AreaName, Path = AreaPath, Type = (AreaType)Enum.Parse(typeof(AreaType), AreaType), ContentFiles = ContentFiles.Select(o => o.ItemSpec).ToArray() }; // ensure output directory exists before file creation string outputDir = Path.GetDirectoryName(outputFullPath); FileSystem.CreateDirectory(outputDir); XmlSerializer serializer = new XmlSerializer(typeof(AreaInfo)); using (Stream stream = FileSystem.FileOpen(outputFullPath, FileMode.Create)) { serializer.Serialize(stream, info); } // if we got this far, success! return(true); }
private void Copy(AreaInfo originInfo, AreaInfo destinationInfo, bool doCrossCopy) { // need to be careful not to delete existing <content> files, but can overwrite existing non-<content> files { // step 1 - copy from origin to destination HashSet<string> existingDestinationContentFiles = new HashSet<string>(destinationInfo.ContentFiles, StringComparer.OrdinalIgnoreCase); var filesToCopy = from originFileName in originInfo.ContentFiles let destinationFileName = RewriteViewPath(originInfo.Name, originFileName) where !existingDestinationContentFiles.Contains(destinationFileName) select new { OriginFile = originFileName, DestinationFile = destinationFileName }; foreach (var fileToCopy in filesToCopy) { CopyFile(originInfo.Path, fileToCopy.OriginFile, destinationInfo.Path, fileToCopy.DestinationFile); } } if (doCrossCopy) { // step 2 - copy from destination to origin var filesToCopy = destinationInfo.ContentFiles.Except(originInfo.ContentFiles); foreach (string fileToCopy in filesToCopy) { CopyFile(destinationInfo.Path, fileToCopy, originInfo.Path, fileToCopy); } } }
public override bool Execute() { string outputFileName = String.Format("{0}.area-manifest.xml", AreaName); string outputFullPath = Path.Combine(ManifestPath, outputFileName); AreaInfo info = new AreaInfo() { Name = AreaName, Path = AreaPath, Type = (AreaType)Enum.Parse(typeof(AreaType), AreaType), ContentFiles = ContentFiles.Select(o => o.ItemSpec).ToArray() }; // ensure output directory exists before file creation string outputDir = Path.GetDirectoryName(outputFullPath); FileSystem.CreateDirectory(outputDir); XmlSerializer serializer = new XmlSerializer(typeof(AreaInfo)); using (Stream stream = FileSystem.FileOpen(outputFullPath, FileMode.Create)) { serializer.Serialize(stream, info); } // if we got this far, success! return true; }