Example #1
0
        private void GenerateCodeFromTemplate <T>(string templatePath, ProjectItem projItem, string parameterName, IEnumerable <T> parameterCollection,
                                                  string folderPath, ProjectItem folderItem, string suffix = null, bool ovewrite = true, string prefix = null) where T : IHasName
        {
            foreach (var parameter in parameterCollection)
            {
                var generatedFileName = GetGeneratedFileName(suffix, prefix, parameter);

                var result          = t4Service.TransformText(templatePath, parameterName, parameter);
                var destinationFile = Path.Combine(folderPath, generatedFileName);
                if (ovewrite || !File.Exists(destinationFile))
                {
                    File.WriteAllText(destinationFile, result.Content);
                }

                // add file if it does not exist
                var fileItem = projItem.ProjectItems.Cast <ProjectItem>().FirstOrDefault(i => i.Name == generatedFileName);
                if (fileItem != null)
                {
                    continue;
                }

                if (projItem.Name.EndsWith(".raml"))
                {
                    var alreadyIncludedInProj = IsAlreadyIncludedInProject(folderPath, folderItem, generatedFileName, projItem);
                    if (!alreadyIncludedInProj)
                    {
                        projItem.ProjectItems.AddFromFile(destinationFile);
                    }
                }
                else
                {
                    projItem.ProjectItems.AddFromFile(destinationFile);
                }
            }
        }
Example #2
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);
                }
            }
        }
        private void GenerateCodeFromTemplate <T>(TemplateParams <T> templateParams) where T : IHasName
        {
            foreach (var parameter in templateParams.ParameterCollection)
            {
                var generatedFileName = GetGeneratedFileName(templateParams.Suffix, templateParams.Prefix, parameter);

                var result          = t4Service.TransformText(templateParams.TemplatePath, templateParams.ParameterName, parameter, templateParams.BinPath, templateParams.TargetNamespace, templateParams.UseAsyncMethods, templateParams.IncludeHasModels, templateParams.HasModels);
                var destinationFile = Path.Combine(templateParams.FolderPath, generatedFileName);
                var contents        = templatesManager.AddServerMetadataHeader(result.Content, Path.GetFileNameWithoutExtension(templateParams.TemplatePath), templateParams.Title);

                if (templateParams.Ovewrite || !File.Exists(destinationFile))
                {
                    File.WriteAllText(destinationFile, contents);
                }

                // add file if it does not exist
                var fileItem = templateParams.ProjItem.ProjectItems.Cast <ProjectItem>().FirstOrDefault(i => i.Name == generatedFileName);
                if (fileItem != null)
                {
                    continue;
                }

                if (templateParams.ProjItem.Name.EndsWith(".raml"))
                {
                    var alreadyIncludedInProj = IsAlreadyIncludedInProject(templateParams.FolderPath, templateParams.FolderItem, generatedFileName, templateParams.ProjItem);
                    if (!alreadyIncludedInProj)
                    {
                        templateParams.ProjItem.ProjectItems.AddFromFile(destinationFile);
                    }
                }
                else
                {
                    templateParams.ProjItem.ProjectItems.AddFromFile(destinationFile);
                }
            }
        }