public override bool IsFilePartOfProject(string fileToUpdate, BuildItemMembershipType membershipType, bool relativeItem) { ProjectItem buildItem; if (relativeItem) { buildItem = GetItem(fileToUpdate); } else { buildItem = GetItem(fileToUpdate, false); } if (buildItem == null) { if (membershipType == BuildItemMembershipType.Content) { buildItem = GetItem("Content\\" + fileToUpdate); if (buildItem != null && buildItem.ItemType == "Content") { return(true); } } if (buildItem == null) { return(false); } } else { if (membershipType == BuildItemMembershipType.CompileOrContentPipeline) { if (!AllowContentCompile || buildItem.ItemType == "Compile" || buildItem.ItemType == "Content") { return(true); } } else if (membershipType == BuildItemMembershipType.Content) { if (!AllowContentCompile || buildItem.ItemType == "Compile" || buildItem.ItemType == "Content") { return(true); } else if (relativeItem == false) { return(true); } } else if (membershipType == BuildItemMembershipType.CopyIfNewer) { bool compile = FileManager.GetExtension(fileToUpdate) == "x"; if (compile) { if (!AllowContentCompile || buildItem.ItemType == "Compile") { return(true); } } else { if (!NeedCopyToOutput || buildItem.HasMetadata("CopyToOutputDirectory")) { return(true); } } } else if (membershipType == BuildItemMembershipType.Any) { return(true); } else if (membershipType.ToString() == buildItem.ItemType) { return(true); } } return(false); /* * * // Even though there's some code duplication, let's do the if statement outside of the loop to speed things up * if (membershipType == BuildItemMembershipType.CompileOrContentPipeline) * { * int count = mProject.EvaluatedItems.Count; * for (int i = 0; i < count ; i++) * { * BuildItem buildItem = mProject.EvaluatedItems[i]; * * if (buildItem.Include.ToLower().Replace("/", "\\") == fileToUpdate) * { * if (buildItem.Name == "Compile" || buildItem.Name == "Content") * { * return true; * } * } * } * } * else if (membershipType == BuildItemMembershipType.CopyIfNewer) * { * bool compile = FileManager.GetExtension(fileToUpdate) == "x"; * * int count = mProject.EvaluatedItems.Count; * if (compile) * { * for (int i = 0; i < count; i++) * { * BuildItem buildItem = mProject.EvaluatedItems[i]; * * if (buildItem.Include.ToLower().Replace("/", "\\") == fileToUpdate) * { * if (buildItem.Name == "Compile") * { * return true; * } * } * } * } * else * { * for (int i = 0; i < count; i++) * { * BuildItem buildItem = mProject.EvaluatedItems[i]; * * if (buildItem.Include.ToLower().Replace("/", "\\") == fileToUpdate) * { * if (buildItem.HasMetadata("CopyToOutputDirectory")) * { * return true; * } * } * } * } * * } * return false; */ }
public override bool IsFilePartOfProject(string fileToUpdate, BuildItemMembershipType membershipType, bool relativeItem) { ProjectItem buildItem; if (relativeItem) { buildItem = GetItem(fileToUpdate); } else { buildItem = GetItem(fileToUpdate, false); } if (buildItem == null) { if (membershipType == BuildItemMembershipType.Content) { buildItem = GetItem("Content\\" + fileToUpdate); if (buildItem != null && buildItem.ItemType == "Content") { return true; } } if (buildItem == null) { return false; } } else { if (membershipType == BuildItemMembershipType.CompileOrContentPipeline) { if (!AllowContentCompile || buildItem.ItemType == "Compile" || buildItem.ItemType == "Content") { return true; } } else if (membershipType == BuildItemMembershipType.Content) { if (!AllowContentCompile || buildItem.ItemType == "Compile" || buildItem.ItemType == "Content") { return true; } else if (relativeItem == false) { return true; } } else if (membershipType == BuildItemMembershipType.CopyIfNewer) { bool compile = FileManager.GetExtension(fileToUpdate) == "x"; if (compile) { if (!AllowContentCompile || buildItem.ItemType == "Compile") { return true; } } else { if (!NeedCopyToOutput || buildItem.HasMetadata("CopyToOutputDirectory")) { return true; } } } else if (membershipType == BuildItemMembershipType.Any) { return true; } else if(membershipType.ToString() == buildItem.ItemType) { return true; } } return false; /* // Even though there's some code duplication, let's do the if statement outside of the loop to speed things up if (membershipType == BuildItemMembershipType.CompileOrContentPipeline) { int count = mProject.EvaluatedItems.Count; for (int i = 0; i < count ; i++) { BuildItem buildItem = mProject.EvaluatedItems[i]; if (buildItem.Include.ToLower().Replace("/", "\\") == fileToUpdate) { if (buildItem.Name == "Compile" || buildItem.Name == "Content") { return true; } } } } else if (membershipType == BuildItemMembershipType.CopyIfNewer) { bool compile = FileManager.GetExtension(fileToUpdate) == "x"; int count = mProject.EvaluatedItems.Count; if (compile) { for (int i = 0; i < count; i++) { BuildItem buildItem = mProject.EvaluatedItems[i]; if (buildItem.Include.ToLower().Replace("/", "\\") == fileToUpdate) { if (buildItem.Name == "Compile") { return true; } } } } else { for (int i = 0; i < count; i++) { BuildItem buildItem = mProject.EvaluatedItems[i]; if (buildItem.Include.ToLower().Replace("/", "\\") == fileToUpdate) { if (buildItem.HasMetadata("CopyToOutputDirectory")) { return true; } } } } } return false; */ }