标签:Dim vb End While Next VSIX Nothing cp 历遍 vb.net源码
vb.net开发VS插件
想要操作一下 所有项目中的所有函数代码. 结果 查了大量的 微软参考文档,竟然没有发现
而网友提供的例子,多不是vb.net,而且没有操控代码的.基本都是ActiveDocument 插入注释等.
参考网友的代码 给 vb.net的朋友提供一个历遍项目 历遍文件的例子.
1 Dim dtes As IEnumerable(Of DTE) = GetAllInstances() 2 If dtes.Count() = 0 Then Return 3 4 For Each dte1 As DTE In dtes 5 If dte1.Solution.FileName.Contains("VSix测试用程序") Then 6 If dte1 IsNot Nothing Then 7 For Each items As EnvDTE.Project In dte1.Solution.Projects 8 9 For Each item As ProjectItem In items.ProjectItems 10 11 Dim prjItem As ProjectItem = item 12 If prjItem Is Nothing Then Return 13 Dim fcm As FileCodeModel = prjItem.FileCodeModel 14 If fcm Is Nothing Then Return 15 Dim ces As CodeElements = fcm.CodeElements 16 Dim cls As CodeClass = Nothing 17 Dim isStartEdit As Integer = 1 18 For Each ce As CodeElement In ces 19 If ce.Kind = vsCMElement.vsCMElementClass Then 20 cls = TryCast(ce, CodeClass) 21 For Each fs As CodeFunction In ce.Members 22 Dim cp As EditPoint = fs.StartPoint.CreateEditPoint 23 24 isStartEdit = 1 25 While isStartEdit 26 Dim dt As String = cp.CreateEditPoint.GetText(cp.LineLength) 27 If dt.EndsWith("_" & vbCrLf & " ") OrElse dt.EndsWith("," & vbCrLf & " ") Then 28 cp.LineDown(1) 29 Else 30 cp.LineDown(1) 31 Exit While 32 End If 33 34 isStartEdit += 1 35 36 If isStartEdit > 20 Then Exit While 37 End While 38 39 cp = fs.EndPoint.CreateEditPoint 40 cp.StartOfLine() 41 Next 42 43 End If 44 Next 45 Next 46 item.Save() 47 48 Next 49 50 End If 51 End If 52 Next 53 Finally 54 End Try
1 Private Shared Iterator Function GetAllInstances() As IEnumerable(Of DTE) 2 Dim rot As IRunningObjectTable = Nothing 3 Dim enumMoniker As IEnumMoniker = Nothing 4 Dim retVal As Integer = GetRunningObjectTable(0, rot) 5 6 If retVal = 0 Then 7 rot.EnumRunning(enumMoniker) 8 Dim fetched As IntPtr = IntPtr.Zero 9 Dim moniker As IMoniker() = New IMoniker(0) {} 10 Dim punkObject As Object = Nothing 11 12 While enumMoniker.[Next](1, moniker, fetched) = 0 13 Dim bindCtx As IBindCtx = Nothing 14 CreateBindCtx(0, bindCtx) 15 Dim displayName As String = "" 16 moniker(0).GetDisplayName(bindCtx, Nothing, displayName) 17 Dim isVisualStudio As Boolean = displayName.StartsWith("!VisualStudio") 18 19 If isVisualStudio Then 20 rot.GetObject(moniker(0), punkObject) 21 Dim dte = CType((punkObject), DTE) 22 Yield dte 23 End If 24 End While 25 End If 26 End Function
标签:Dim,vb,End,While,Next,VSIX,Nothing,cp,历遍,vb.net源码 来源: https://www.cnblogs.com/MadeInChinese/p/16652342.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。