2012-07-03 6 views
0

Am very noob с VBasic, но здесь мы идем. Я хочу найти ссылку на проект внутри моего решения в среде VStudio 2010 с использованием макросов. Этот proj будет использоваться для добавления новых элементов, используйте его путь для нового файла.Как найти проект в дереве?

В моем решении есть несколько виртуальных папок, когда я пытался перебрать все дерево, я не смог спуститься глубоко к листьям. Кто-то это сделал?

Позже я попытался собрать ссылку проекта, используя его имя:

StartupProj = DTE.Solution.Item("MySpecialProj.uniquext") 

Но я получаю эту ошибку

The parameter is incorrect. (Exception from HRESULT:0x80070057 (E:INVALIDARG)) 

погуглить его, обнаружил, что это правильный путь, но не повезло что я получаю эту ошибку. Кто-нибудь помогает мне здесь?

+0

Можете ли вы показать мне код, который вы проверили, чтобы перебирать все дерево, которое не проникает глубоко в листья? –

ответ

1

Надеется, что это помогает:

Решение: очистить временные файлы рамка для вашего проекта в:

для Windows 7, путь: C: \ Users [имя пользователя] \ AppData \ Local \ Temp \ Temporary ASP.NET Files \

Для 64-разрядных систем с «Framework» в пути полный путь: C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP. NET Files \

Ссылка:http://www.solutioncottage.com/ShowSolution.aspx?solID=59

Примечание: делать поиск по коду ошибки на Google обычно дает некоторые отличные результаты ;-)

Edit: Что касается прибегая к помощи код шестнадцатеричный Error. Я рекомендую лучше использовать Microsoft Error Utility. Вы загружаете инструмент, помещаете exe в свою папку system32. Затем откройте CMD и запустите команду err 0x80070057. Он сообщит вам об ошибке в файлах заголовков операционной системы. Его много easiler to google эти текстовые сообщения вместе с шестнадцатеричным кодом. ps установка exe в папку system32 означает, что вы можете запускать CMD из любой директории в окне команд.

Вот результат с выходом портирована в текстовый файл: err 0x80070057 > C:\NotNullGothjik.txt

# for hex 0x80070057/decimal -2147024809 : 
    COR_E_ARGUMENT            corerror.h  
# MessageText: 
# An argument does not meet the contract of the method. 
    DDERR_INVALIDPARAMS           ddraw.h   
    DIERR_INVALIDPARAM           dinput.h  
    DPERR_INVALIDPARAM           dplay.h   
    DPERR_INVALIDPARAMS           dplay.h   
    DPNERR_INVALIDPARAM           dplay8.h  
    DSERR_INVALIDPARAM           dsound.h  
    DVERR_INVALIDPARAM           dvoice.h  
    ecInvalidParam            ec.h   
    ecInvalidSession            ec.h   
    ecBadBuffer             ec.h   
    MAPI_E_INVALID_PARAMETER          mapicode.h  
    STIERR_INVALID_PARAM           stierr.h  
    E_INVALIDARG             winerror.h  
# One or more arguments are invalid 
# 14 matches found for "0x80070057" 
+0

Спасибо за помощь Джереми! :) Имейте хороший – Dayan

0

Если вы хотите узнать & ссылки DLL всех выбранных проекта вы можете использовать:

Private _applicationObject As DTE2 

Public Sub OnConnection(application As Object, connectMode As ext_ConnectMode, addInInst As Object, ByRef [custom] As Array) 
    _applicationObject = DirectCast(application, DTE2) 
End Sub 

...

For Each project As Project In DirectCast(_applicationObject.ActiveSolutionProjects, Object()) 
    Dim vsProject As VSProject = TryCast(project.[Object], VSProject) 
    If vsProject <> Nothing Then    
     For Each reference As Reference In vsProject.References 
      ' Do cool stuff here 
     Next 
    End If 
Next 

Вам необходимо найти и включить ссылку на VSLangProj.dll (например. в Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssemblies)

Смежные вопросы