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);
        }
Beispiel #2
0
        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();
        }
Beispiel #4
0
 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);
 }
Beispiel #5
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);
 }
Beispiel #12
0
 public static void RemoveGeneratedItemCustomMetadata(this IVsProject project, List <string> paths)
 {
     project.EnsureIsCheckout();
     ProjectFactoryHelperInstance.ProjectHelper.RemoveGeneratedItemCustomMetadata(project, paths);
 }