【问题标题】:Visual Studio Macro: How to perform "File -> Save All" programaticallyVisual Studio 宏:如何以编程方式执行“文件 -> 全部保存”
【发布时间】:2011-02-25 07:33:19
【问题描述】:

我正在寻找在某些 Rake 宏之前运行“文件 -> 全部保存”的等价物。

到目前为止我所拥有的是:

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 或 File -> Save All。

那么,如何使用 Visual Studio 宏全部保存?

【问题讨论】:

    标签: visual-studio macros


    【解决方案1】:

    如果您有兴趣了解为什么 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
    

    【讨论】:

      【解决方案2】:

      显然DTE.Documents.SaveAll 不会保存所有打开的文档(也许它只保存属于打开项目的文档)。尝试使用

      DTE.ExecuteCommand("File.SaveAll")
      

      这与执行 File -> Save All 完全一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多