我正在寻找相当于在某些Rake宏之前运行“File - > Save All”。
到目前为止我所拥有的是:
Private Sub Pre_Rake()
Dim i As Integer
DTE.Documents.SaveAll()
For i = 1 To DTE.Solution.Projects.Count
If Not DTE.Solution.Projects.Item(i).Saved Then
DTE.Solution.Projects.Item(i).Save()
End If
Next
End Sub
DTE.Documents.SaveAll工作正常,但for循环不会像我期望的那样保存项目文件。
如果我在解决方案资源管理器中制作文件的副本,则在运行Pre_Rake()之后,该文件不会包含在项目文件(.CSPROJ)中。我仍然需要按CTRL-SHIFT-S或文件 - >全部保存。
那么,如何使用Visual Studio宏保存所有内容?
答案 0 :(得分:8)
显然DTE.Documents.SaveAll
不保存所有打开的文档(可能只保存属于打开项目的文档)。尝试使用
DTE.ExecuteCommand("File.SaveAll")
就像做文件一样 - >全部保存。
答案 1 :(得分:2)
如果您有兴趣了解为什么For循环不起作用,那是因为我们还必须遍历项目项:
Sub SaveAllFiles()
For i = 1 To DTE.Solution.Projects.Count
If Not DTE.Solution.Projects.Item(i).Saved Then
DTE.Solution.Projects.Item(i).Save()
End If
For j = 1 To DTE.Solution.Projects.Item(i).ProjectItems.Count
If Not DTE.Solution.Projects.Item(i).ProjectItems.Item(j).Saved Then
DTE.Solution.Projects.Item(i).ProjectItems.Item(j).Save()
End If
Next
Next
End Sub