Попытка добавить папку через Env DTE ProjectItem.AddFolder, но получение папки уже существует - PullRequest
0 голосов
/ 30 апреля 2020

Я генерирую некоторый код с использованием шаблонов T4 и добавляю их в проект с использованием EnvDTE

Чтобы добавить файл в правильную папку проекта, я «рекурсивно» ищу элементы проекта для папки, в которую я хочу добавить новый элемент. Если он не существует, я хочу добавить его.


            var directories = resultPath.Split(Path.DirectorySeparatorChar).ToList();
            var path = Path.GetDirectoryName(project.FullName);
            ProjectItem item = null;
            foreach (var dir in directories)
            {
                path = Path.Combine(path, dir);
                item = FindProjectItem(path, dir, item == null ? project.ProjectItems : item.ProjectItems);
            }

            if (item != null)
            {
                item.ProjectItems.AddFromFileCopy(workingFullPath);
            }
        private ProjectItem FindProjectItem(string fullPath, string directory, ProjectItems items)
        {
            foreach (ProjectItem item in items)
            {
                if (string.Equals(item.Name, directory, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    return item;
                }
            }

            if (Directory.Exists(fullPath))
            {
                Directory.Delete(fullPath);
            }

            return items.AddFolder(directory);

        }

Предыдущие тесты создали нужные мне папки / файлы, которые я затем удалил в Visual Studio.

При запуске последующих тестов, несмотря на то, что папка не указана в качестве элемента проекта, код разрывается при попытке добавить новую папку с ошибкой «Папка уже существует».

...