Создайте решение и добавьте проект с помощью VisualStudio.DTE.10.0.

Я пытаюсь создать решение 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», но не знаю, как туда добраться.

Спасибо


person Ken    schedule 26.07.2011    source источник
comment
любое окончательное решение с полным исходным кодом?   -  person Kiquenet    schedule 21.01.2013


Ответы (2)


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

Type latestSolution = Type.GetTypeFromProgID("VisualStudio.10.0", true);
EnvDTE100.Solution4 vsSolution = (EnvDTE100.Solution4)Activator.CreateInstance(latestSolution, true);
person Sarfaraz Mohammad    schedule 31.08.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).

person Blaise Alicki    schedule 02.08.2011