private void ResolveOutputTargetProjectItem(FileBlock fileBlock) { OutputTarget outputTarget = fileBlock.Target; Project project = string.IsNullOrEmpty(outputTarget.ProjectName) ? null : FindProjectByName(dte, outputTarget.ProjectName); ProjectItems targetProjectItems = null; if (project != null) { if (!string.IsNullOrEmpty(outputTarget.ProjectPath)) { var pathItems = outputTarget.ProjectPath.Split('\\'); var projectItems = project.ProjectItems; foreach (var pathItem in pathItems) { var projItem = FindProjectItem(dte, projectItems, pathItem, Constants.vsProjectItemKindPhysicalFolder); if (projItem != null) { if (projItem.ProjectItems.Count > 0) { projectItems = projItem.ProjectItems; } if (pathItem == pathItems.Last()) { targetProjectItems = projItem.ProjectItems; } } } } else { var dir = Path.GetDirectoryName(project.FileName); var templateFileDir = TemplateFileAsOutputTarget.OutputDirectory; if (dir != templateFileDir) { targetProjectItems = project.ProjectItems; } } } //outputTarget.ProjectItem = targetProjectItem ?? TemplateFileAsOutputTarget; if (targetProjectItems != null) { outputTarget.Update(targetProjectItems); } else { fileBlock.Target = TemplateFileAsOutputTarget; } }