Построить решение, только если старое в VS Macro IDE

Как использовать Visual Studio Macro IDE, как определить, является ли сборка устаревшей или устаревшей?

В настоящее время я переназначаю свой F5 для запуска собственного макроса, который перейдет в режим отладки и подключится к браузеру без создания решения. Обычно я всегда нажимал Control-Shift-B перед отладкой, но я думал, что смогу сделать шаг вперед и запрограммировать этот процесс также в макрос. Лучшая часть этой настройки состоит в том, что, если я не изменил код со времени последней сборки, я всегда могу подключиться к отладке и выйти из нее без избыточной перестройки решения, как при использовании обычного режима отладки (F5).

По сути, я хочу знать, существует ли переменная или какой-либо процесс, чтобы сказать, был ли изменен код со времени последней сборки.

Вот макрос полностью, с??? часть показывает, что я пытаюсь сделать. Используйте его для себя, если хотите - это сэкономит мне кучу времени при отладке больших решений.

Imports System
Imports EnvDTE80
Imports System.Diagnostics

Public Module AttachToWebServer
    Public Sub AttachToWebServer()
        Dim AspNetWp As String = "aspnet_wp.exe"
        Dim W3WP As String = "w3wp.exe"
        Dim buildIsOld As Boolean

        buildIsOld = ???

        If buildIsOld Then
            ' Build the solution and wait for it to finish
            DTE.Solution.SolutionBuild.Build(True)
        End If

        ' Are we at a breakpoint?
        If DTE.Debugger.CurrentMode = EnvDTE.dbgDebugMode.dbgBreakMode Then
            DTE.Debugger.Go() ' Then continue instead of reattaching
        Else ' If not, attach to IIS
            If Not (AttachToProcess(AspNetWp)) Then
                If Not AttachToProcess(W3WP) Then
                    System.Windows.Forms.MessageBox.Show(String.Format("Process {0} or {1} Cannot Be Found", AspNetWp, W3WP), "Attach To Web Server Macro")
                End If
            End If
        End If
    End Sub

    Public Function AttachToProcess(ByVal processName As String) As Boolean
        Dim processFound As Boolean = False
        For Each Process As EnvDTE.Process In DTE.Debugger.LocalProcesses
            If (Process.Name.Substring(Process.Name.LastIndexOf("\") + 1) = processName) Then
                Process.Attach()
                processFound = True
            End If
        Next
        Return processFound
    End Function
End Module

0 ответов

Другие вопросы по тегам