#c# #visual-studio-2013 #progid
#c# #visual-studio-2013 #progid
Вопрос:
Я пытаюсь создать экземпляр Visual Studio с помощью :
EnvDTE80.DTE2 dte2;
dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0");
И у меня всегда возникает исключение «Недопустимая строка класса», поэтому я предполагаю, что проблема в «VisualStudio.DTE.12.0».
Но я работаю над Visual Studio 2013 12.0.30501, я также пытался поставить только «VisualStudio.DTE», чтобы получить самую последнюю версию, и то же исключение.
Кроме того, я попробовал другой способ :
Type t = Type.GetTypeFromProgID("VisualStudio.DTE.12.0", true);
dte2 = (EnvDTE80.DTE2)System.Activator.CreateInstance(t, true);
Проблема все еще существует, я немного не понимаю… Действительно ли это ошибка недопустимой строки?
Комментарии:
1. Нет, это правильный ProgID, если у вас VS2013. Ваш реестр, должно быть, поврежден, используйте Regedit.exe чтобы взглянуть на HKEY_CLASSES_ROOT HKEY_CLASSES_ROOTVisualStudio.DTE.12.0. С ожиданием, что вы не сможете его найти.
2. Это правильно, я не могу найти в regedit ключ /VisualStudio.DTE.12.0. Как я должен его «создать»?
3. Ваша машина сломана. Бог знает, что еще исчезло. Не стесняйтесь паниковать. Повторный запуск установщика VS может сработать.
4. Что ж, большое вам спасибо, я постараюсь решить это таким образом!
Ответ №1:
Если вы используете Visual Studio 2013 Express, это работает, чтобы исправить это:
Type t = Type.GetTypeFromProgID("WDExpress.DTE.12.0", true);
var x = (EnvDTE80.DTE2)System.Activator.CreateInstance(t, true);