public override bool Execute() { Log.LogMessage($"Copying static web assets to blazor project via task..."); try { foreach (string projectName in ProjectsWithStaticFiles) { if (AssetPath.Contains(projectName)) { var fileName = Path.GetFileName(AssetPath); var folderName = $"{TargetPath}/_content/{projectName}/"; var sourcePath = AssetPath.Replace(fileName, ""); if (!Directory.Exists(folderName)) { Directory.CreateDirectory(folderName); } // copy all directories foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories)) { Directory.CreateDirectory(dirPath.Replace(sourcePath, folderName)); } // copy all files foreach (string filePath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories)) { File.Copy(filePath, filePath.Replace(sourcePath, folderName), true); } if (File.Exists(JsImportsPath)) { var jsImports = JsonConvert.DeserializeObject <List <string> >(File.ReadAllText(JsImportsPath)); var indexTsxFielPath = $"{TargetPath}/index.tsx"; var jsImportsString = ""; foreach (var jsImport in jsImports) { if (!File.ReadAllText(indexTsxFielPath).Contains($"import '{jsImport}';")) { jsImportsString += $"import '{jsImport}';\n"; } } File.WriteAllText(indexTsxFielPath, jsImportsString + File.ReadAllText(indexTsxFielPath)); } else { Log.LogError($"The file '{JsImportsPath}' does not exist."); } Log.LogMessage($"'{AssetPath}' copied to '{folderName}'."); } } } catch (Exception error) { Log.LogError(error.Message); return(false); } return(true); }