public void RemoveCodeFile(DocumentPath documentPath) { MsBuildProject container = null; MsBuildItem itemToRemove = null; foreach (var proj in this.Solution.Projects) { if (proj.Value.Name == documentPath.ProjectName) { foreach (var item in proj.Value.Items) { if (item.DocumentPath.Equals(documentPath) && this.msBuildStoreAdapters.Any(a => a.ItemSupported(item))) { container = proj.Value; itemToRemove = item; break; } } } } if (itemToRemove != null) { container.RemoveItem(itemToRemove); } }
public void RemoveItem(MsBuildItem item) { if (!this.IsUsingDefaultItemsForItemType(item.ItemType)) { this.Project.RemoveItem(item.Item); } if (this.fileSystem.File.Exists(item.FullPath)) { this.fileSystem.File.Delete(item.FullPath); } this.items.Remove(item); }
public IEnumerable <MsBuildItem> AddItem(string itemType, string unevaluatedInclude) { var result = new List <MsBuildItem>(); if (this.IsUsingDefaultItemsForItemType(itemType)) { string fullPath = null; string projectDirectory = this.fileSystem.Path.GetDirectoryName(this.FullPath); if (this.fileSystem.Path.IsPathRooted(unevaluatedInclude)) { fullPath = this.fileSystem.Path.GetFullPath(unevaluatedInclude); } else { fullPath = this.fileSystem.Path.GetFullPath(this.fileSystem.Path.Combine(projectDirectory, unevaluatedInclude)); } if (!PathMaskHelper.DirectoryIsBaseOf(projectDirectory, fullPath)) { throw new InvalidOperationException($"Project {this.Name} is using default items for {itemType}, item path {fullPath} should be under project path {projectDirectory}."); } var itemDirectory = this.fileSystem.Path.GetDirectoryName(fullPath); DocumentPath docPath = new DocumentPath( this.Name, itemDirectory.Remove(0, projectDirectory.Length).Split(new char[] { this.fileSystem.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries), this.fileSystem.Path.GetFileName(fullPath)); if (!this.fileSystem.File.Exists(fullPath)) { this.fileSystem.File.WriteAllText(fullPath, string.Empty); } var newItem = new MsBuildItem(docPath, fullPath, itemType, this); this.items.Add(newItem); result.Add(newItem); } else { foreach (var item in this.Project.AddItem(itemType, unevaluatedInclude)) { var newItem = new MsBuildItem(item, this); this.items.Add(newItem); result.Add(newItem); } } return(result); }
public virtual bool ItemSupported(MsBuildItem item) { return(item.ItemType != null && item.ItemType != this.itemType); }