public static void AddCSharpGeneratedFiles(IVsProject project, string file) { ThreadHelper.ThrowIfNotOnUIThread(); var projectDir = project.GetProjectBaseDirectory(); var dteproject = project.GetDTEProject(); var fileset = GetCsharpGeneratedFiles(project, dteproject, projectDir, file); // // First remove any generated items that are not in the // current generated items set for this Slice file // project.DeleteItems(project.WithProject((MSProject msproject) => { return(msproject.AllEvaluatedItems.Where( item => { if (item.ItemType.Equals("Compile") && item.HasMetadata("SliceCompileSource")) { if (item.GetMetadataValue("SliceCompileSource").Equals(fileset.filename)) { return !fileset.sources.ContainsKey(Path.GetFullPath(Path.Combine(projectDir, item.EvaluatedInclude))); } } return false; }).Select(item => Path.Combine(projectDir, item.EvaluatedInclude)).ToList()); })); foreach (var entry in fileset.sources) { AddCSharpGeneratedItem(project, dteproject, projectDir, FileUtil.RelativePath(projectDir, fileset.filename), FileUtil.RelativePath(projectDir, entry.Key)); } }
public static void SetupGenerated(IVsProject project) { ThreadHelper.ThrowIfNotOnUIThread(); var projectDir = project.GetProjectBaseDirectory(); // // Remove all CompileClCompile and ClInclude items that have an associted SliceCompileSource // item metadata that doesn't much any of the project SliceCompile items // if (project.IsCppProject()) { project.DeleteItems(project.WithProject((MSProject msproject) => { var sliceCompile = msproject.AllEvaluatedItems.Where( item => item.ItemType.Equals("SliceCompile")).Select( item => item.EvaluatedInclude); return(msproject.AllEvaluatedItems.Where( item => { if (item.ItemType.Equals("ClCompile") || item.ItemType.Equals("ClInclude")) { if (item.HasMetadata("SliceCompileSource")) { var value = item.GetMetadataValue("SliceCompileSource"); return !sliceCompile.Contains(value); } } return false; }).Select(item => Path.Combine(projectDir, item.EvaluatedInclude)).ToList()); })); } else // C# project { project.DeleteItems(project.WithProject((MSProject msproject) => { var sliceCompile = msproject.AllEvaluatedItems.Where( item => item.ItemType.Equals("SliceCompile")).Select( item => item.EvaluatedInclude); return(msproject.AllEvaluatedItems.Where( item => { if (item.ItemType.Equals("Compile")) { if (item.HasMetadata("SliceCompileSource")) { var value = item.GetMetadataValue("SliceCompileSource"); return !sliceCompile.Contains(value); } } return false; }).Select(item => Path.Combine(projectDir, item.EvaluatedInclude)).ToList()); })); } // Now add any missing generated items var sliceItems = project.GetIceBuilderItems(); foreach (var item in sliceItems) { AddGeneratedFiles(project, item); } }
public static void AddCppGeneratedFiles(IVsProject project, string file) { ThreadHelper.ThrowIfNotOnUIThread(); var vcutil = Package.Instance.VCUtil; var projectDir = project.GetProjectBaseDirectory(); var dteproject = project.GetDTEProject(); var fileset = GetCppGeneratedFiles(project, dteproject, vcutil, projectDir, file); var allConfigurations = new List <string>(); foreach (EnvDTE.Configuration configuration in dteproject.ConfigurationManager) { allConfigurations.Add(ConfigurationString(configuration)); } // // First remove any generated items that are not in the // current generated items set for this Slice file // project.DeleteItems(project.WithProject((MSProject msproject) => { return(msproject.AllEvaluatedItems.Where( item => { if (item.ItemType.Equals("ClCompile") && item.HasMetadata("SliceCompileSource")) { if (item.GetMetadataValue("SliceCompileSource").Equals(fileset.filename)) { return !fileset.sources.ContainsKey(Path.GetFullPath(Path.Combine(projectDir, item.EvaluatedInclude))); } } else if (item.ItemType.Equals("ClInclude") && item.HasMetadata("SliceCompileSource")) { if (item.GetMetadataValue("SliceCompileSource").Equals(fileset.filename)) { return !fileset.headers.ContainsKey(Path.GetFullPath(Path.Combine(projectDir, item.EvaluatedInclude))); } } return false; }).Select(item => Path.Combine(projectDir, item.EvaluatedInclude)).ToList()); })); foreach (var entry in fileset.sources) { AddCppGeneratedItem(project, dteproject, vcutil, projectDir, FileUtil.RelativePath(projectDir, fileset.filename), FileUtil.RelativePath(projectDir, entry.Key), "Source Files", allConfigurations, entry.Value); } foreach (var entry in fileset.headers) { AddCppGeneratedItem(project, dteproject, vcutil, projectDir, FileUtil.RelativePath(projectDir, fileset.filename), FileUtil.RelativePath(projectDir, entry.Key), "Header Files", allConfigurations, entry.Value); } }