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?.ToString(); } }); return(customTool); }
public static void RecoverTemplateIfCorrupted(string path, string content) { RetryUtil.RetryOnException(() => { // EnvDTE in .NET 5 can lost content of the template var template = File.ReadAllText(path); if (string.IsNullOrWhiteSpace(template)) { dte.ItemOperations.OpenFile(path); dte.ActiveDocument.Close(); File.WriteAllText(path, content); dte.ItemOperations.OpenFile(path); } }); }
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); } } } }); }