调试前运行批处理脚本
我想每次运行批处理脚本,然后启动调试程序。调试前运行批处理脚本
对于构建事件,此类功能是使用预构建事件,构建后事件实现的。
对于实际的调试,我找不到任何预调试,后调试事件。
如何实现这种情况?
我使用的是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