static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("\r\nsymbol-upload -oOUTPATH <files>"); return; } var files = new List <string>(); string outPath = null; foreach (var arg in args) { if (arg.StartsWith("-o")) { outPath = arg.Substring(2); continue; } files.Add(arg); } if (outPath == null) { Console.WriteLine("No output path specified."); return; } var inputFiles = files.SelectMany(file => { string directoryName = Path.GetDirectoryName(file); string fileName = Path.GetFileName(file); return(Directory.EnumerateFiles(string.IsNullOrWhiteSpace(directoryName) ? "." : directoryName, fileName, SearchOption.TopDirectoryOnly)); }); if (!inputFiles.Any()) { Console.WriteLine("Input files not found."); return; } var po = new PublishOperation(new Tracer() { Enabled = true }); var publishFiles = po.GetPublishFileInfo(inputFiles, false); foreach (var file in publishFiles) { var outName = Path.Combine(outPath, file.Index); Directory.CreateDirectory(Path.GetDirectoryName(outName)); File.Copy(file.FileName, outName, true); } }
public static async System.Threading.Tasks.Task PublishAsync( TaskLoggingHelper log, string symbolServerPath, string personalAccessToken, IEnumerable <string> inputPackages, IEnumerable <string> inputFiles, HashSet <string> packageExcludeFiles, int expirationInDays, bool convertPortablePdbsToWindowsPdbs, bool publishSpecialClrFiles, HashSet <int> pdbConversionTreatAsWarning, bool treatPdbConversionIssuesAsInfo, bool dryRun, bool timer, bool verboseLogging) { var tracer = new Tracer(log, verboseLogging); PublishOperation publishOperation = new PublishOperation(tracer) { SymbolServerPath = symbolServerPath, PersonalAccessToken = personalAccessToken, PdbConversionTreatAsWarning = pdbConversionTreatAsWarning, PublishSpecialClrFiles = publishSpecialClrFiles, Timer = timer, TreatPdbConversionIssuesAsInfo = treatPdbConversionIssuesAsInfo }; using (publishOperation) { if (expirationInDays != 0) { publishOperation.ExpirationInDays = (uint)expirationInDays; } IEnumerable <PublishFileInfo> fileInfos = new PublishFileInfo[0]; if (inputFiles != null) { fileInfos = fileInfos.Concat( publishOperation.GetPublishFileInfo(inputFiles, convertPortablePdbsToWindowsPdbs)); } if (inputPackages != null) { fileInfos = fileInfos.Concat( publishOperation.GetPublishFileInfoFromPackages(inputPackages, convertPortablePdbsToWindowsPdbs)); } if (packageExcludeFiles != null) { publishOperation.PackageExcludeFiles = packageExcludeFiles; } if (dryRun) { publishOperation.StartTimer(); try { foreach (PublishFileInfo fileInfo in fileInfos) { fileInfo.Dispose(); } } catch (Exception ex) { tracer.Error("Dry Run FAILED: {0}", ex.Message); tracer.Information(ex.ToString()); } publishOperation.StopTimer(); } else { try { await publishOperation.PublishFiles(fileInfos); } catch (Exception ex) { tracer.Error("Publishing symbols failed : ", ex.Message); tracer.Information(ex.ToString()); } } } }