如何预防于 Visual Studio 使用 Git 当做版本控制时, Commit 后看到 “ No newline at end of file” 的错误消息

使用 Visual Studio Macro 功能自动于 EOF 加上一行空白行, 预防使用 Git 当做版本控制时, Commit 后看到 “ No newline at end of file” 的错误消息



1. 在 Visual Studio, 点选 Tools > Macros  > Macros IDE

2. 选择 Class View tab. 在 My Macros下, double click the EnvironmentEvents node.

3. 选择左边 dropdown list 的 DocumentEvents, 接着选择右边dropdown list 的 DocumentSaved. Visual Studio 会自动产生一个空白的 event handler.

4. 将以下的 code 贴到新产生的 event handler 内.

Private Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved 
      ' 
      ' This handler will add a newline to end of file if it doesn't already have one. 
      ' 
      Dim textSelection As EnvDTE.TextSelection

      textSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)

      Dim originalLine As Integer 
      originalLine = textSelection.AnchorPoint.Line 
      Dim originalOffset As Integer 
      originalOffset = textSelection.AnchorPoint.LineCharOffset
      Dim viewTop As EnvDTE.TextPoint 
      viewTop = textSelection.TextPane.StartPoint

      textSelection.EndOfDocument(False) 
      Dim pt As VirtualPoint 
      pt = textSelection.BottomPoint()

      textSelection.GotoLine(pt.Line, True) 
      If textSelection.Text.Length <> 0 Then 
          textSelection.Text = textSelection.Text & vbCrLf 
          DTE.ActiveDocument.Save() 
      End If 
      textSelection.MoveToLineAndOffset(originalLine, originalOffset, False) 
      textSelection.TextPane.TryToShow(viewTop, vsPaneShowHow.vsPaneShowTop) 
  End Sub

5. 将此 macro 存档, 之后就不会在继续在 Git 看见那个错误消息啦