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); } }