public override void Invoke() { if (MicrosoftSymbolServer && InternalSymbolServer) { throw new DiagnosticsException("Cannot have both -ms and -mi options"); } if ((MicrosoftSymbolServer || InternalSymbolServer) && !string.IsNullOrEmpty(SymbolServerUrl)) { throw new DiagnosticsException("Cannot have -ms or -mi option and a symbol server path"); } if (Disable) { SymbolService.DisableSymbolStore(); } if (Reset) { SymbolService.Reset(); } if (MicrosoftSymbolServer || InternalSymbolServer || !string.IsNullOrEmpty(SymbolServerUrl)) { if (string.IsNullOrEmpty(Cache)) { Cache = SymbolService.DefaultSymbolCache; } SymbolService.AddSymbolServer(MicrosoftSymbolServer, InternalSymbolServer, SymbolServerUrl, AccessToken, Timeout, RetryCount); } if (!string.IsNullOrEmpty(Cache)) { SymbolService.AddCachePath(Cache); } if (!string.IsNullOrEmpty(Directory)) { SymbolService.AddDirectoryPath(Directory); } if (LoadSymbols) { foreach (IModule module in ModuleService.EnumerateModules()) { if (!module.IsManaged) { Write($"Downloading symbol file for {module.FileName}"); string downloadedModulePath = module.LoadSymbols(); WriteLine(" {0}", downloadedModulePath != null ? "SUCCEEDED" : "FAILED"); } } } else { Write(SymbolService.ToString()); } }