2011-05-06 44 views
4

我想在Visual Studio开始调试我的程序之前运行一个任务。 我每次调试程序时都需要运行此任务,因此生成后事件不够好。在Visual Studio 2008上设置预调试事件

我查看了设置的“调试”选项卡,但没有这样的选项。

有没有办法做到这一点?

回答

2

你可以尝试(IMO)的唯一事情是实验与您项目属性调试页面命令属性,但我不认为会工作。

编辑:如果你想开始一个批处理文件,像这样做,

yourbatch.bat $(targetPath) 

和yourbatch.bat你可以打电话给你这样的程序,

call %1 %2 %3 %4 %5 %6 %7 %8 %9 

,其中2% ...%3代表可能的程序参数(由您的IDE提供)

我只想知道您的程序是否会直接调试(我认为您可能必须手动附加到我DE)

+0

这听起来是个好主意,但是如何将两条命令放在同一行上?假设我想调用'myscript.bat',然后调用'$(TargetPath)',你将如何在同一个命令行上调用它们。调试器也不会尝试调试'myscript.bat'吗? – Arthur 2011-05-09 09:16:39

+1

@jules将所有命令放在.cmd/.bat文件中。您可以从一个.bat文件中调用.bat文件。bat文件(请参阅http://www.computerhope.com/batch.htm寻求帮助)使用CALL命令。 – Dennis 2011-05-09 13:27:03

+0

有没有人发现它是否会直接调试项目? – Avery3R 2013-09-18 00:34:55

1

为您的“调试”构建的编译选项添加预构建步骤,并且没有在“发布”构建中。 (编辑:预编译步骤在项目属性的“生成事件”部分中设置)

如果您正在讨论函数或代码中的某些内容,请使用预编译器标志。例如,在你的调试版本,你可能有“_DEBUG”或编译器标志类似的东西...所以在代码中,你可以做

#ifdef _DEBUG 
doMySpecialTask(); 
#endif 

,并使用调试版本时,它才会被调用。

编辑:从以下注释中移动信息: 要在运行时动态检测调试器,可以使用Windows中的IsDebuggerPresent()函数。 Mac也有一个AmIBeingDebugged()。如果你希望程序在调试时行为不同,这很有用,但除非没有其他选项可用,否则我不建议这样做。调试时修改程序的行为可能会导致问题消失或以不同的方式显示。

+0

但是,即使我不需要构建应用程序,预构建事件也会被调用吗? – Arthur 2011-05-06 09:33:19

+0

@jules不,不,如果你不建立应用程序。在这种情况下,你可以使用'#ifdef'语句来代替。例如'doMySpecialTask​​()'可以运行.bat文件或.cmd文件来启动应用程序,甚至启动应用程序。 无论何时使用调试版本,这都会工作,而不仅仅是当你构建它时。 如果您需要动态检测调试器,请使用Windows中的“IsDebuggerPresent”函数。请参阅http://msdn.microsoft.com/en-us/library/ms680345%28v=vs.85%29.aspx – Dennis 2011-05-06 09:57:03