我想每次運行批處理腳本,然後啓動調試程序。調試前運行批處理腳本
對於構建事件,此類功能是使用預構建事件,構建後事件實現的。
對於實際的調試,我找不到任何預調試,後調試事件。
如何實現這種情況?
我使用的是VS2008,.net framework 3.5,c#應用程序。
我反對在應用程序中創建一些額外的代碼行來啓動外部批處理文件。
我想每次運行批處理腳本,然後啓動調試程序。調試前運行批處理腳本
對於構建事件,此類功能是使用預構建事件,構建後事件實現的。
對於實際的調試,我找不到任何預調試,後調試事件。
如何實現這種情況?
我使用的是VS2008,.net framework 3.5,c#應用程序。
我反對在應用程序中創建一些額外的代碼行來啓動外部批處理文件。
我知道你希望避免額外的代碼,但在你的Main
函數中你可以使用Debugger.IsAttached()
爲您啓動您的工作。
例如:
if (Debugger.IsAttached)
{
System.Diagnostics.Process.Start(@"C:\myBatchFile.bat");
}
if $(ConfigurationName) == Debug mkdir c:\mydir
你應該看看...... How to run Visual Studio post-build events for debug build only
所以,你必須要通過預生成事件運行.bat文件? 嘗試在預生成事件命令中指定批處理文件的完整路徑,例如
cmd /c C:\Path\to\foo.bat
或
cmd C:\windows\system32\cmd.exe /c C:\Path\to\foo.bat
您可能完全誤解了這個問題。請記住,在每次調試開始之前,「Pre/Post-build」事件不會運行。對於前者,如果在上次構建之後還沒有對代碼進行任何更改,則在調試之前不會觸發構建。 – 2016-01-20 14:51:22
您可以使用VS宏。
我有同樣的問題,這是我來到這麼遠
Dim MustUpdateDB As Boolean
Private Sub DebuggerEvents_OnEnterRunMode(ByVal Reason As EnvDTE.dbgEventReason) Handles DebuggerEvents.OnEnterRunMode
If (MustUpdateDB) Then
MsgBox("Start debug operation", MsgBoxStyle.OkOnly, "TITLE")
REM DO WHATEVER COMMAND HERE
REM System.Diagnostics.Process.Start("C:\listfiles.bat")
MustUpdateDB = False
End If
End Sub
Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
MsgBox("Build Done", MsgBoxStyle.OkOnly, "Title")
MustUpdateDB = True
End Sub
有關於如何事件處理程序添加到宏 here
唯一的問題一個很好的解釋最好我到目前爲止是要弄清楚如何獲得當前調試的應用程序的活動目錄
其實我需要的東西,這只是調試之前觸發,而不是之後後生成事件。每次在調試模式下啓動該工具時,我都必須運行腳本。儘管源代碼沒有變化(因此沒有構建,只有工具啓動)。 – Tilak 2011-03-23 17:16:20