如何在树中找到项目?

时间:2012-07-03 17:07:17

标签: vb.net visual-studio-2010 macros

与VBasic非常相似,但我们走了。我想使用宏在VStudio 2010环境中找到我的解决方案中的项目参考。此项目将用于添加新项目,将其路径用于新文件。

在我的解决方案中,使用了几个虚拟文件夹,当我试图遍历所有树时,我无法深入到树叶。有人做过吗?

后来我尝试使用其名称收集项目引用:

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

但我得到的只是这个错误

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

谷歌搜索它,发现它是正确的方式,但没有运气找到我为什么会得到这个错误。 有人在这帮助我吗?

2 个答案:

答案 0 :(得分:1)

希望这会有所帮助:

<强>解决方案: 在以下位置清除项目的临时框架文件:

对于Windows 7,路径为: C:\ Users [用户名] \ AppData \ Local \ Temp \ Temporary ASP.NET Files \

对于路径中带有“Framework”的64位系统,完整路径为: C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files \

参考: http://www.solutioncottage.com/ShowSolution.aspx?solID=59

注意:在google上搜索错误代码通常会产生一些很好的结果; - )

编辑:关于Google搜索十六进制错误代码。我建议最好使用Microsoft Error Utility。您下载该工具,将exe放在您的system32文件夹中。然后打开CMD并运行命令err 0x80070057。它会告诉您操作系统头文件中的错误。它很容易谷歌这些短信和十六进制代码。 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"

答案 1 :(得分:0)

如果你想找出所有选定项目的&amp;您可以使用的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中)