private ITaskItem[] GetOutputFiles(PublishInfo[] publishInfos) { List <ITaskItem> list = new List <ITaskItem>(); FileMap map = new FileMap(); if (this.Files != null) { foreach (ITaskItem item in this.Files) { map.Add(item, true); } } if (this.ExtraFiles != null) { foreach (ITaskItem item2 in this.ExtraFiles) { map.Add(item2, false); } } foreach (PublishInfo info in publishInfos) { MapEntry entry = map[info.key]; if (entry != null) { entry.publishInfo = info; } else { base.Log.LogWarningWithCodeFromResources("ResolveManifestFiles.PublishFileNotFound", new object[] { info.key }); } } foreach (MapEntry entry2 in (IEnumerable)map) { if (entry2.publishInfo == null) { entry2.publishInfo = new PublishInfo(); } string extension = Path.GetExtension(entry2.item.ItemSpec); PublishFlags flags = PublishFlags.GetFileFlags(entry2.publishInfo.state, extension, entry2.includedByDefault); if ((flags.IsPublished && string.Equals(entry2.publishInfo.includeHash, "false", StringComparison.OrdinalIgnoreCase)) && this.SigningManifests) { this.canPublish = false; } if (flags.IsPublished) { list.Add(CreateFileItem(entry2.item, entry2.publishInfo.group, entry2.publishInfo.targetPath, entry2.publishInfo.includeHash, flags.IsDataFile)); } } return(list.ToArray()); }
private ITaskItem[] GetOutputFiles(PublishInfo[] publishInfos) { List <ITaskItem> fileList = new List <ITaskItem>(); FileMap fileMap = new FileMap(); // Add all input Files to the FileMap, flagging them to be published by default... if (Files != null) { foreach (ITaskItem item in Files) { fileMap.Add(item, true); } } // Add all input ExtraFiles to the FileMap, flagging them to NOT be published by default... if (ExtraFiles != null) { foreach (ITaskItem item in ExtraFiles) { fileMap.Add(item, false); } } // Apply PublishInfo state from PublishFile items... foreach (PublishInfo publishInfo in publishInfos) { MapEntry entry = fileMap[publishInfo.key]; if (entry != null) { entry.publishInfo = publishInfo; } else { Log.LogWarningWithCodeFromResources("ResolveManifestFiles.PublishFileNotFound", publishInfo.key); } } // Go through the FileMap and determine which items get added to ouput FileList based // on computed PublishFlags for each item... foreach (MapEntry entry in fileMap) { // If PublishInfo didn't come from a PublishFile item, then construct PublishInfo from the item if (entry.publishInfo == null) { entry.publishInfo = new PublishInfo(); } string fileExtension = Path.GetExtension(entry.item.ItemSpec); PublishFlags flags = PublishFlags.GetFileFlags(entry.publishInfo.state, fileExtension, entry.includedByDefault); if (flags.IsPublished && string.Equals(entry.publishInfo.includeHash, "false", StringComparison.OrdinalIgnoreCase) && SigningManifests == true) { _canPublish = false; } if (flags.IsPublished) { fileList.Add(CreateFileItem(entry.item, entry.publishInfo.group, entry.publishInfo.targetPath, entry.publishInfo.includeHash, flags.IsDataFile)); } } return(fileList.ToArray()); }