public void AddToProject(ProjectLocation location, CreateFilesOperationResult creationResult) { string folderPath = location.FolderPath; string targetProjectUniqueName = location.ProjectUniqueName; var project = FindProject(targetProjectUniqueName); if (project == null) { throw new ArgumentException(Strings.ProjectNotFound.FormatUI(targetProjectUniqueName), nameof(targetProjectUniqueName)); } var parentItems = GetTargetProjectItems(project, folderPath); // Remember which folder items we're adding, because we can't query them // in F# project system var folderItems = new Dictionary <string, EnvDTE.ProjectItems>(); try { foreach (var createdFolderPath in creationResult.FoldersCreated) { var absoluteFilePath = Path.Combine(folderPath, createdFolderPath); var folder = GetOrCreateFolderItem(parentItems, createdFolderPath); folderItems[createdFolderPath] = folder; } } catch (NotImplementedException) { // Some project types such as C++ don't support creating folders } foreach (var createdFilePath in creationResult.FilesCreated) { var absoluteFilePath = Path.Combine(folderPath, createdFilePath); EnvDTE.ProjectItems itemParent; try { itemParent = GetOrCreateFolderItem(parentItems, Path.GetDirectoryName(createdFilePath)); } catch (NotImplementedException) { // Some project types such as C++ don't support creating folders // so we'll add everything flat itemParent = parentItems; } catch (ArgumentException) { // Some project types such as F# don't return folders as ProjectItem // so we can't find the folder we just created above. Attempting to // create it generates a ArgumentException saying the folder already exists. if (!folderItems.TryGetValue(Path.GetDirectoryName(createdFilePath), out itemParent)) { itemParent = parentItems; } } if (FindItemByName(itemParent, Path.GetFileName(createdFilePath)) == null) { itemParent.AddFromFile(absoluteFilePath); } } }
public void AddToProject(ProjectLocation location, CreateFilesOperationResult creationResult) { string folderPath = location.FolderPath; string targetProjectUniqueName = location.ProjectUniqueName; var project = FindProject(targetProjectUniqueName); if (project == null) { throw new ArgumentException(Strings.ProjectNotFound.FormatUI(targetProjectUniqueName), nameof(targetProjectUniqueName)); } var parentItems = GetTargetProjectItems(project, folderPath); // Remember which folder items we're adding, because we can't query them // in F# project system var folderItems = new Dictionary<string, EnvDTE.ProjectItems>(); try { foreach (var createdFolderPath in creationResult.FoldersCreated) { var absoluteFilePath = Path.Combine(folderPath, createdFolderPath); var folder = GetOrCreateFolderItem(parentItems, createdFolderPath); folderItems[createdFolderPath] = folder; } } catch (NotImplementedException) { // Some project types such as C++ don't support creating folders } foreach (var createdFilePath in creationResult.FilesCreated) { var absoluteFilePath = Path.Combine(folderPath, createdFilePath); EnvDTE.ProjectItems itemParent; try { itemParent = GetOrCreateFolderItem(parentItems, Path.GetDirectoryName(createdFilePath)); } catch (NotImplementedException) { // Some project types such as C++ don't support creating folders // so we'll add everything flat itemParent = parentItems; } catch (ArgumentException) { // Some project types such as F# don't return folders as ProjectItem // so we can't find the folder we just created above. Attempting to // create it generates a ArgumentException saying the folder already exists. if (!folderItems.TryGetValue(Path.GetDirectoryName(createdFilePath), out itemParent)) { itemParent = parentItems; } } if (FindItemByName(itemParent, Path.GetFileName(createdFilePath)) == null) { itemParent.AddFromFile(absoluteFilePath); } } }
public void AddToProject(ProjectLocation location, CreateFilesOperationResult creationResult) { Added.Add(Tuple.Create(location, creationResult)); }