Создайте решение и добавьте проект, используя «VisualStudio.DTE.10.0» - PullRequest
2 голосов
/ 26 июля 2011

Я пытаюсь создать решение VS2010 и добавить проект из автономного приложения (не надстройки). Я могу создать экземпляр VS2010, но я не могу определить, как правильно создать проект ... Я могу найти только пример того, как создать проект с использованием объекта EnvDTE80, который позже вызывает исключение, потому что проект Файл в более раннем формате и должен быть обновлен. У меня есть это:

EnvDTE80.DTE2 dte2;
object obj;
System.Type t;
t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
obj = System.Activator.CreateInstance(t, true);
dte2 = (EnvDTE80.DTE2)obj;

То, что я ищу, является эквивалентом чего-то вроде «EnvDTE100.DTE2», но не знаю, как туда добраться.

Спасибо

Ответы [ 2 ]

4 голосов
/ 31 августа 2011

Вам не нужно проходить через объект DTE. Отношение к объектному решению4 отличается, вы должны сделать это

Type latestSolution = Type.GetTypeFromProgID("VisualStudio.10.0", true);
EnvDTE100.Solution4 vsSolution = (EnvDTE100.Solution4)Activator.CreateInstance(latestSolution, true);
1 голос
/ 02 августа 2011

Я думаю, что делаю нечто подобное, у меня есть приложение, которое создает решение и загружает два проекта из шаблонов, которые я создал в VS2010. Вы правы в том, что кажется, что EnvDTE80 все еще использует, даже в VS2010, но затем мы используем его для создания решения 2010 года:

System.Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)obj;
EnvDTE100.Solution4 soln = (EnvDTE100.Solution4)dte2.Solution;

Затем вы можете вызывать методы объекта soln для создания вашего проекта (в моем случае это AddFromTemplate).

...