OptionStrictOff OptionExplicitOff Imports EnvDTE Imports System.Diagnostics Imports System.Data PublicModule RecordingModuleModule RecordingModule Private dt AsNew DataTable Sub GetProject()Sub GetProject(ByVal items As ProjectItems) ForEach item As EnvDTE.ProjectItem In items If item.ProjectItems.Count >0Then GetProject(item.ProjectItems) EndIf Count(item) Next End Sub Sub Count()Sub Count(ByVal item As EnvDTE.ProjectItem) Dim fileName AsString= item.Name.ToLower() Dim extName AsString If fileName.IndexOf(".") <0Then extName ="Folder" Else extName = fileName.Substring(fileName.LastIndexOf(".")) EndIf Dim ArrayDr As DataRow() = dt.Select("ExtName='"+ extName +"'") Dim dr As DataRow If ArrayDr.Length =0Then dr = dt.NewRow() dr("ExtName") = extName dt.Rows.Add(dr) Else dr = ArrayDr(0) EndIf IfNot (dr("File") Is System.DBNull.Value) Then dr("File") =CType(dr("File"), System.Int32) +1 Else dr("File") =1 EndIf Try Dim objWindow As Window = item.Open(Constants.vsViewKindCode) Dim objDocument As Document = item.Document Dim objTextDocument As TextDocument = objDocument.Object("TextDocument") Dim strDocumentText AsString= objTextDocument.StartPoint.CreateEditPoint().GetText(objTextDocument.EndPoint) IfNot (dr("Line") Is System.DBNull.Value) Then dr("Line") =CType(dr("Line"), System.Int32) + strDocumentText.Split(vbCrLf).Length() Else dr("Line") = strDocumentText.Split(vbCrLf).Length() EndIf DTE.ExecuteCommand("Window.CloseDocumentWindow") DTE.ActiveWindow.Close(vsSaveChanges.vsSaveChangesNo) Catch EndTry End Sub Sub TemporaryMacro()Sub TemporaryMacro() dt =New DataTable IfNot dt.Columns.Contains("ExtName") Then dt.Columns.Add("ExtName", System.Type.GetType("System.String")) '扩展名 dt.Columns.Add("File", System.Type.GetType("System.Int32")) '行数 dt.Columns.Add("Line", System.Type.GetType("System.Int32")) '行数 dt.Columns.Add("Cha", System.Type.GetType("System.Int32")) '字符数量 EndIf Dim proj As Project = DTE.ActiveSolutionProjects(0) GetProject(proj.ProjectItems()) Dim outPutStr AsString="FileType".PadRight(10) &"File".PadLeft(10) &"Line".PadLeft(10) &""& vbCrLf ForEach dr As DataRow In dt.Rows outPutStr += dr("ExtName").ToString().PadRight(10) & dr("File").ToString().PadLeft(10) & dr("Line").ToString().PadLeft(10) & vbCrLf Next MsgBox(outPutStr) End Sub End Module