Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
 public void AddToProject(ProjectLocation location, CreateFilesOperationResult creationResult) {
     Added.Add(Tuple.Create(location, creationResult));
 }