public static ProjectItem AddFileToProject(string projectName, string fileName, string customTool = "TextTemplatingFileGenerator") { ProjectItem projectItem = null; RetryUtil.RetryOnException(() => { var project = GetSolutionProjects().First(n => n.Name == projectName); var path = Path.GetFullPath(fileName); projectItem = project.ProjectItems.AddFromFile(path); var property = projectItem.Properties.Item("CustomTool"); if (property == null) { throw new ArgumentException("The property CustomTool was not found."); } property.Value = customTool; }); return(projectItem); }
public static void RemoveFileFromProject(string fileName) { RetryUtil.RetryOnException(() => { var projectItem = dte.Solution.FindProjectItem(fileName); projectItem?.Remove(); }); }
public static void SaveFileAutomaticallyRunCustomTool(ProjectItem item) { RetryUtil.RetryOnException(() => { item.Open(); item.Save(); }); }
private static IEnumerable <Project> GetSolutionProjects() { IEnumerable <Project> projects = null; RetryUtil.RetryOnException(() => { projects = dte.Solution.Projects.Cast <Project>(); }); return(projects); }
public static string GetProjectDirectory(string projectName) { string directory = null; RetryUtil.RetryOnException(() => { var projectFilePath = GetSolutionProjects().First(p => p.Name.Contains(projectName))?.FullName; directory = Path.GetDirectoryName(projectFilePath); }); return(directory); }
public static DTE GetCurrentDte() { DTE dte = null; RetryUtil.RetryOnException(() => { dte = GetDtes().First(x => x.Solution?.FileName.Contains("T4.FileManager.VisualStudio") == true); dte.MainWindow.Activate(); dte.MainWindow.SetFocus(); }); return(dte); }
public static string GetCustomToolByFileName(string name, string projectName) { string customTool = null; RetryUtil.RetryOnException(() => { var item = dte.Solution.FindProjectItem(name); if (item != null) { customTool = item.Properties.Item("CustomTool").Value; } }); return(customTool); }
public static void CleanupFiles(string[] projectNames, string[] extensions) { RetryUtil.RetryOnException(() => { var cleanupItems = new List <ProjectItem>(); foreach (var projectName in projectNames) { var project = GetSolutionProjects().First(p => p.Name == projectName); var items = GetAllProjectItemsRecursive(project.ProjectItems); foreach (var extension in extensions) { cleanupItems.AddRange(items.Where(n => n.Name.EndsWith(extension))); } } foreach (var item in cleanupItems) { var fullPath = GetProjectItemFullPath(item); item.Remove(); if (File.Exists(fullPath)) { File.Delete(fullPath); } } foreach (var projectName in projectNames) { var projectPath = GetProjectDirectory(projectName); foreach (var extension in extensions) { foreach (var file in Directory.EnumerateFiles(projectPath, $"*{extension}", SearchOption.AllDirectories)) { File.Delete(file); } } } }); }