public override void AddRamlReference(RamlChooserActionParams parameters) { try { Logger.LogInformation("Add RAML Reference process started"); Tracking.Track("API reference .Net Core"); var dte = ServiceProvider.GetService(typeof(SDTE)) as DTE; var proj = VisualStudioAutomationHelper.GetActiveProject(dte); if (VisualStudioAutomationHelper.IsJsonOrXProj(proj)) { AddPortableImports(proj); } InstallNugetDependencies(proj); Logger.LogInformation("Nuget Dependencies installed"); AddFilesToProject(parameters.Data, parameters.RamlFilePath, proj, parameters.TargetNamespace, parameters.RamlSource, parameters.TargetFileName, parameters.ClientRootClassName); Logger.LogInformation("Files added to project"); } catch (Exception ex) { Logger.LogError(ex); var errorMessage = "Error when trying to add the RAML reference. " + ex.Message; if (ex.InnerException != null) { errorMessage += " - " + ex.InnerException; } MessageBox.Show(errorMessage); throw; } }
private static bool IsAJsonOrXProj() { var dte = ServiceProvider.GlobalProvider.GetService(typeof(SDTE)) as DTE; var proj = VisualStudioAutomationHelper.GetActiveProject(dte); return(VisualStudioAutomationHelper.IsJsonOrXProj(proj)); }
public void GenerateCodeFromTemplate <T>(TemplateParams <T> templateParams) where T : IHasName { Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread(); if (!Directory.Exists(templateParams.TargetFolder)) { Directory.CreateDirectory(templateParams.TargetFolder); } foreach (var parameter in templateParams.ParameterCollection) { var generatedFileName = GetGeneratedFileName(templateParams.Suffix, templateParams.Prefix, parameter); var destinationFile = Path.Combine(templateParams.TargetFolder, generatedFileName); var result = t4Service.TransformText(templateParams.TemplatePath, templateParams.ParameterName, parameter, templateParams.BinPath, templateParams.ControllersNamespace, templateParams.ModelsNamespace, templateParams.UseAsyncMethods, templateParams.IncludeHasModels, templateParams.HasModels, templateParams.IncludeApiVersionInRoutePrefix, templateParams.ApiVersion, templateParams.TestsNamespace); var contents = templatesManager.AddServerMetadataHeader(result.Content, Path.GetFileNameWithoutExtension(templateParams.TemplatePath), templateParams.Title); if (templateParams.Ovewrite || !File.Exists(destinationFile)) { File.WriteAllText(destinationFile, contents); } if (templateParams.ParameterName == "controllerObject" || templateParams.TargetFolder == templateParams.FolderPath) { // add file if it does not exist var fileItem = templateParams.ProjItem.ProjectItems.Cast <ProjectItem>() .FirstOrDefault(i => i.Name == generatedFileName); if (fileItem != null) { continue; } // var alreadyIncludedInProj = IsAlreadyIncludedInProject(templateParams.FolderPath, templateParams.FolderItem, generatedFileName, templateParams.ProjItem); //if (!alreadyIncludedInProj) if (!VisualStudioAutomationHelper.IsJsonOrXProj(templateParams.FolderItem.ContainingProject)) { templateParams.ProjItem.ProjectItems.AddFromFile(destinationFile); } } else { var folder = templateParams.TargetFolder.TrimEnd(Path.DirectorySeparatorChar); var proj = templateParams.ProjItem.ContainingProject; AddItem(folder, proj, generatedFileName, destinationFile, templateParams.RelativeFolder); } } }
private static void AddFileToProject(ProjectItem contractsFolderItem, string fileName, string file) { if (VisualStudioAutomationHelper.IsJsonOrXProj(contractsFolderItem.ContainingProject)) { return; } var fileItem = contractsFolderItem.ProjectItems.Cast <ProjectItem>().FirstOrDefault(i => i.Name == fileName); if (fileItem != null) { return; } contractsFolderItem.ProjectItems.AddFromFile(file); }
private static ProjectItem CreateFolderItem(Project proj, string path, string relativeFolder) { if (ContainsSubFolders(relativeFolder)) { var folders = relativeFolder.Split(PossibleDirectorySeparatorChars); var folderItem = VisualStudioAutomationHelper.AddFolderIfNotExists(proj, folders[0]); return(CreateFolderItem(folderItem, folders, 1)); } if (VisualStudioAutomationHelper.IsJsonOrXProj(proj)) { return(null); } var folderName = path.Substring(path.LastIndexOf(Path.DirectorySeparatorChar) + 1); return(VisualStudioAutomationHelper.AddFolderIfNotExists(proj, folderName)); }