From 816b536f38d5852d5156f2c6c8c24ee2206ce6db Mon Sep 17 00:00:00 2001 From: Muhammad Rehan Saeed Date: Sat, 18 Mar 2017 11:42:18 +0000 Subject: [PATCH] Update CreateTemplateTask.cs --- .../CreateTemplateTask.cs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/LigerShark.TemplateBuilder.Tasks/CreateTemplateTask.cs b/src/LigerShark.TemplateBuilder.Tasks/CreateTemplateTask.cs index db2647b..de75028 100644 --- a/src/LigerShark.TemplateBuilder.Tasks/CreateTemplateTask.cs +++ b/src/LigerShark.TemplateBuilder.Tasks/CreateTemplateTask.cs @@ -73,7 +73,7 @@ private HashSet GetFiles(string projectDirectoryPath) { return files; } - + private void RecurseItems(XElement projectItemContainer, HashSet takenSourceFileNames, HashSet takenTargetFileNames) { RecurseItems(projectItemContainer, null, null, takenSourceFileNames, takenTargetFileNames); } @@ -110,14 +110,14 @@ private string GetProjectFile(XDocument vstemplate) { result = System.IO.Path.Combine(vsTemplateFi.Directory.FullName, projfilename); } - return result; + return result; } public override bool Execute() { var vstemplate = XDocument.Load(VsTemplateShell); var workingTemplate = XDocument.Load(VsTemplateShell); // var workingTemplate = XDocument.Parse(@""); - + if (vstemplate.Root == null || workingTemplate.Root == null) { return false; } @@ -180,7 +180,7 @@ public override bool Execute() { templateContentElement.Add(customParameters); } - if (UpdateProjectElement) { + if (UpdateProjectElement) { projectElement.SetAttributeValue(XName.Get("TargetFileName"), "$safeprojectname$" + projectExtension); projectElement.SetAttributeValue(XName.Get("File"), realProjectFile); projectElement.SetAttributeValue(XName.Get("ReplaceParameters"), true); @@ -196,7 +196,8 @@ public override bool Execute() { _filesToExclude = new List(); var itemsToMerge = new List(); - if (string.Equals(projectExtension, ".xproj", StringComparison.OrdinalIgnoreCase)) { + if (string.Equals(projectExtension, ".xproj", StringComparison.OrdinalIgnoreCase) || + (string.Equals(projectExtension, ".csproj", StringComparison.OrdinalIgnoreCase) && IsNewCsproj(project.FullPath))) { var files = GetFiles(Path.GetDirectoryName(project.FullPath)); foreach (var file in files) { if (!CanExcludeFile(file.ToLower(), _filesToExclude) && @@ -241,7 +242,7 @@ public override bool Execute() { //Copy all non-mutated sections var mutatedTemplateSections = new[] {"TemplateContent", "TemplateData"}; - // In commit f668a11df0f403520ae1457d3fd5a872ace2107d the entire file is copied first, + // In commit f668a11df0f403520ae1457d3fd5a872ace2107d the entire file is copied first, // so this should no longer be needed. // var elementsToCopyDirectly = vstemplate.Root.Elements().Where(x => !mutatedTemplateSections.Contains(x.Name.LocalName)); //foreach (var element in elementsToCopyDirectly) { @@ -265,12 +266,20 @@ public override bool Execute() { return true; } + private bool IsNewCsproj(string filePath) + { + var xml = File.ReadAllText(filePath); + var document = XDocument.Parse(xml); + var sdk = document.Element("Project")?.Attribute("Sdk")?.Value; + return !string.IsNullOrEmpty(sdk); + } + private bool CanExcludeFile(string fileName, IList filesToExclude) { bool exclude = false; if (FilesExclude != null) { foreach (var item in FilesExclude) { - if (item != null && + if (item != null && !string.IsNullOrEmpty(item.ItemSpec) && string.Equals(fileName, item.ItemSpec.ToLower(), StringComparison.Ordinal)) { exclude = true;