2010-02-10 3 views
1

Я пытаюсь получить список всех проектов в пределах указанного решения VS2008. (это автономное консольное приложение, это не дополнение Visual Studio)Создание VisualStudio 2008

Мой код работает с решениями VS2005, но я получаю всевозможные уродливые ошибки COM, пытающиеся использовать объект VS2008.

Что я имею в виду: Это:

Type _visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.8.0"); 
DTE _dte = Activator.CreateInstance(_visualStudioType) as DTE; 

работы и это:

Type _visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.9.0"); 
DTE _dte = Activator.CreateInstance(_visualStudioType) as DTE; 

не (в настоящее время бросает COM ошибка 8001010a)

Я как соответствующие классы зарегистрированы в реестре, и все соответствующие сборки ссылаются.


Edit: я пойду с основным парсингом .sln файла, даже если мне придется сделать немного перезаписи, поскольку манипуляция текста обязана работать без всяких неприятных вещей-взаимодействия. Однако, похоже, я не могу найти описание формата .sln, любых ресурсов?

+0

О чем свидетельствует документация VS2008 об этом? – Lazarus

+1

Разбирает файл .sln? Похоже, было бы намного проще. –

+0

Документация утверждает, что это должно работать :) И я хотел бы избежать разбора файла .sln напрямую, потому что это приведет к аннулированию кода 2005 года, который у меня есть (также представим партию новых проблем синтаксического анализа, которые, как я полагаю) – SWeko

ответ

1

Возможно, вы захотите посмотреть следующее: Library for parsing Visual Studio Solution files? Если разбор .sln напрямую оказывается вашим единственным вариантом.

Что касается текущей проблемы, some other people have had your issue. KB246018 says check out your antivirus as the leading cause (пример - слово, но то же самое относится к VS). Попробуйте полностью исключить каталог VS.

+0

не работает с выключенным антивирусом И если я попробую DTE2 _dte = (DTE2) Microsoft.VisualBasic.Interaction.CreateObject ("VisualStudio.DTE.9.0", ""); Я получаю «Не могу создать компонент ActiveX». ошибка. – SWeko

1

Вы получаете ошибку RPC: «сервер занят». Возможно, это связано с тем, что Visual Studio действительно занята, отлаживая вашу консольную программу. Не отрываясь от отладки с помощью операторов Console.WriteLine(), попробуйте другой отладчик. В SDK для Windows есть отладчики clrdbg.exe и mdbg.exe. У .NET 2.0 SDK был отладчик GUI iirc.

+0

Нет, не удается даже тогда, когда не отлаживается ... И, да, я как бы пытаюсь поднять себя, потянув за мои шнурки. – SWeko

+0

У меня не было проблем с запуском того же кода. Я не могу придумать причину, по которой вы хотели бы, кроме добавления неправильной ссылки. Я использовал envdte.dll из установочного каталога VS2008. –