public static bool TryAddItem(IVsProject project, string path) { var item = project.GetProjectItem(path); if (item == null) { project.EnsureIsCheckout(); if (!Directory.Exists(Path.GetDirectoryName(path))) { Directory.CreateDirectory(Path.GetDirectoryName(path)); } if (!File.Exists(path)) { File.Create(path).Dispose(); } // // Check again in case the item gets auto included once the file // has been created // item = project.GetProjectItem(path); if (item == null) { project.AddFromFile(path); } return(true); } return(false); }
public static void DeleteItems(this IVsProject project, List <string> paths) { project.EnsureIsCheckout(); var projectDir = project.GetProjectBaseDirectory(); project.RemoveGeneratedItemCustomMetadata(paths); var sliceCompileDependencies = paths.Select( p => { return(Path.Combine(Path.GetDirectoryName(p), string.Format("SliceCompile.{0}.d", Path.GetFileNameWithoutExtension(p)))); }).Distinct().ToList(); foreach (var path in sliceCompileDependencies) { if (File.Exists(path)) { try { File.Delete(path); } catch (IOException) { } } } }
public void UpdateProject(IVsProject project, Action <MSProject> action) { project.EnsureIsCheckout(); var msproject = project.GetMSBuildProject(); msproject.ReevaluateIfNecessary(); action(msproject); project.GetDTEProject().Save(); }
public int OnAfterAddFilesEx(int projectsLength, int filesLength, IVsProject[] projects, int[] indices, string[] names, VSADDFILEFLAGS[] rgFlags) { ThreadHelper.JoinableTaskFactory.Run(async() => { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); try { for (int i = 0; i < projectsLength; ++i) { IVsProject project = projects[i]; if (project.IsMSBuildIceBuilderInstalled()) { int j = indices[i]; int k = i < (projectsLength - 1) ? indices[i + 1] : filesLength; for (; j < k; ++j) { string path = names[i]; if (ProjectUtil.IsSliceFileName(path)) { // // Ensure the .ice file item has SliceCompile ItemType // var projectItem = project.GetProjectItem(path); if (projectItem != null) { project.EnsureIsCheckout(); var property = projectItem.Properties.Item("ItemType"); if (property != null && !property.Value.Equals("SliceCompile")) { property.Value = "SliceCompile"; } } ProjectUtil.AddGeneratedFiles(project, path); break; } } } } } catch (OperationCanceledException) { // Ignore, this could happen if the project is reloaded } catch (Exception ex) { Package.UnexpectedExceptionWarning(ex); } }); return(0); }
public int OnAfterAddFilesEx(int projectsLength, int filesLength, IVsProject[] projects, int[] indices, string[] names, VSADDFILEFLAGS[] rgFlags) { try { for (int i = 0; i < projectsLength; ++i) { IVsProject project = projects[i]; if (project.IsMSBuildIceBuilderInstalled()) { int j = indices[i]; int k = i < (projectsLength - 1) ? indices[i + 1] : filesLength; for (; j < k; ++j) { string path = names[i]; if (ProjectUtil.IsSliceFileName(path)) { // // Ensure the .ice file item has SliceCompile ItemType // var projectItem = project.GetProjectItem(path); if (projectItem != null) { project.EnsureIsCheckout(); var property = projectItem.Properties.Item("ItemType"); if (property != null && !property.Value.Equals("SliceCompile")) { property.Value = "SliceCompile"; } } ProjectUtil.AddGeneratedFiles(project, path); break; } } } } } catch (Exception ex) { Package.UnexpectedExceptionWarning(ex); } return(0); }
public void UpdateProject(IVsProject project, Action <MSProject> action) { project.EnsureIsCheckout(); ThreadHelper.JoinableTaskFactory.Run(async() => { var unconfiguredProject = GetUnconfiguredProject(project); if (unconfiguredProject != null) { await UpdateProjectAsync(unconfiguredProject, action); } else { var msproject = project.GetMSBuildProject(); msproject.ReevaluateIfNecessary(); action(msproject); } }); project.GetDTEProject().Save(); }
public static void DeleteItems(this IVsProject project, List <string> paths) { project.EnsureIsCheckout(); foreach (string path in paths) { EnvDTE.ProjectItem item = project.GetProjectItem(path); if (item != null) { if (File.Exists(path)) { item.Delete(); } else { item.Remove(); } } } var sliceCompileDependencies = paths.Select( p => { return(Path.Combine(Path.GetDirectoryName(p), string.Format("SliceCompile.{0}.d", Path.GetFileNameWithoutExtension(p)))); }).Distinct().ToList(); foreach (var path in sliceCompileDependencies) { if (File.Exists(path)) { try { File.Delete(path); } catch (IOException) { } } } }
public static void RemoveGeneratedItemDuplicates(this IVsProject project) { project.EnsureIsCheckout(); ProjectFactoryHelperInstance.ProjectHelper.RemoveGeneratedItemDuplicates(project); }
public static void AddFromFile(this IVsProject project, string file) { project.EnsureIsCheckout(); ProjectFactoryHelperInstance.ProjectHelper.AddFromFile(project, file); }
public static void SetGeneratedItemCustomMetadata(this IVsProject project, string slice, string generated, List <string> excludedConfigurations = null) { project.EnsureIsCheckout(); ProjectFactoryHelperInstance.ProjectHelper.SetGeneratedItemCustomMetadata(project, slice, generated, excludedConfigurations); }
public static void SetItemMetadata(this IVsProject project, string name, string value) { project.EnsureIsCheckout(); ProjectFactoryHelperInstance.ProjectHelper.SetItemMetadata(project, name, value); }
public static void RemoveGeneratedItemCustomMetadata(this IVsProject project, List <string> paths) { project.EnsureIsCheckout(); ProjectFactoryHelperInstance.ProjectHelper.RemoveGeneratedItemCustomMetadata(project, paths); }