Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }