Я хочу добавить несколько проектов в решение с использованием DTE. Это приложение WPF, а не расширение.
Мне нужно добавить несколько проектов в одну папку, а затем еще один проект в другую папку и последний проект в еще одну папку.
При добавлении проектов в первую папку все ок. Но когда я добавляю проекты в другую папку, появляется окно с сообщением: «Операция не может быть завершена: недопустимый дескриптор окна».
После нажатия OK я получаю еще один MessageBox: «Операция не может быть завершена: ошибка не указана».
Но все проекты успешно добавлены в решение. Таким образом, самая большая проблема - это окно сообщения, которое появляется во время выполнения работы. Прочитав «недопустимый дескриптор окна», я подумал, что, возможно, мне следует попробовать ВСЕ в главном потоке. Но результат тот же. Кроме того, в окне вывода Visual Studio нет сообщений. Это мой код:
(DoFunction и DoAction - это простые методы, которые оборачивают содержимое в try..catch и, если есть исключение RPC_E_SERVERCALL_RETRYLATER, будет предпринята другая попытка)
//Getting DTE Service
dteService = DoFunction(() =>(DTE2)Activator.CreateInstance(Type.GetTypeFromProgID("VisualStudio.DTE.15.0", true), true));
//Getting the solution
activeSolution = DoFunction(() => dteService.Solution as Solution4);
DoAction(() =>activeSolution.Open(solutionPath));
ActiveSolution - это мое личное поле.
//Adding project to solution:
DoAction(() =>
{
SolutionFolder folder = GetExistingSolutionFolder(folderTree);
if (folder == null)
activeSolution.AddFromFile(projectFileName);
else
folder.AddFromFile(projectFileName); //<-- messagebox popups here
});
Проект добавляется в папку внутри решения. Папки уже существуют в решении. GetExistingSolutionFolder просто ищет recurseviley для папки.
В чем может быть причина этого сообщения?
Что важно, не исключение.