Построить решение, только если старое в 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