public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { _dte = (DTE)automationObject; if (runKind == WizardRunKind.AsMultiProject) { using (var serviceProvider = new ServiceProvider((IServiceProvider)automationObject)) { var componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel)); using (var container = new CompositionContainer(componentModel.DefaultExportProvider)) { container.ComposeParts(this); } } bool optOutOfStats = _dte.GetOptOutStatsSetting(); if (!optOutOfStats) { Analytics.SubmitAnonymousTemplateUsage(MajorVisualStudioVersion, customParams[0] as string); } string wizardData = replacementsDictionary["$wizarddata$"]; XElement element = XElement.Parse("<WizardData>" + wizardData + "</WizardData>"); if (element.HasRootPackage()) { RootNuGetPackage = element.GetRootPackage(); RootNuGetPackage.Version = GetLatestVersionOfPackage(RootNuGetPackage.Id); } } }
private void SubmitAddRefStats() { DTE dte = Package.GetGlobalService(typeof(DTE)) as DTE; if (dte != null) { bool optOutOfStats = dte.GetOptOutStatsSetting(); if (!optOutOfStats) { var langName = typesHandler.RelativeTypesUrl.Substring(6); Analytics.SubmitAnonymousAddReferenceUsage(langName); } } else { OutputWindowWriter.WriterWindow.WriteLine("Warning: Failed to resolve DTE"); } }
private void UpdateGeneratedDtos(ProjectItem projectItem, INativeTypesHandler typesHandler) { OutputWindowWriter.WriterWindow.Show(); OutputWindowWriter.WriterWindow.ShowOutputPane(dte); OutputWindowWriter.WriterWindow.WriteLine("--- Updating ServiceStack Reference '" + projectItem.Name + "' ---"); string projectItemPath = projectItem.GetFullPath(); var selectedFiles = projectItem.DTE.SelectedItems.Cast <SelectedItem>().ToList(); bool isDtoSelected = false; isDtoSelected = selectedFiles .Any(item => typesHandler.IsHandledFileType(item.Name)); //Handle FSharp file extension name change for DTO files, eg .dto.fs to .dtos.fs if (!isDtoSelected && typesHandler is FSharpNativeTypesHandler) { isDtoSelected = selectedFiles .Any(item => item.Name.ToLowerInvariant() .EndsWith(".dto.fs")); } if (isDtoSelected) { string filePath = projectItemPath; var existingGeneratedCode = File.ReadAllLines(filePath).Join(Environment.NewLine); string baseUrl; if (!typesHandler.TryExtractBaseUrl(existingGeneratedCode, out baseUrl)) { OutputWindowWriter.WriterWindow.WriteLine("Unable to read URL from DTO file. Please ensure the file was generated correctly from a ServiceStack server."); return; } try { var options = typesHandler.ParseComments(existingGeneratedCode); bool setSslValidationCallback = false; //Don't set validation callback if one has already been set for VS. if (ServicePointManager.ServerCertificateValidationCallback == null) { //Temp set validation callback to return true to avoid common dev server ssl certificate validation issues. setSslValidationCallback = true; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true; } string updatedCode = typesHandler.GetUpdatedCode(baseUrl, options); if (setSslValidationCallback) { //If callback was set to return true, reset back to null. ServicePointManager.ServerCertificateValidationCallback = null; } using (var streamWriter = File.CreateText(filePath)) { streamWriter.Write(updatedCode); streamWriter.Flush(); } try { bool optOutOfStats = dte.GetOptOutStatsSetting(); if (!optOutOfStats) { var langName = typesHandler.RelativeTypesUrl.Substring(6); Analytics.SubmitAnonymousUpdateReferenceUsage(langName); } } catch (Exception) { // Ignore errors } } catch (Exception e) { OutputWindowWriter.WriterWindow.WriteLine("Failed to update ServiceStack Reference: Unhandled error - " + e.Message); } OutputWindowWriter.WriterWindow.WriteLine("--- Update ServiceStack Reference Complete ---"); } else { OutputWindowWriter.WriterWindow.WriteLine("--- Valid file not found ServiceStack Reference '" + projectItem.Name + "' ---"); } }