在 Visual Studio 2008 上设置预调试事件
Posted
技术标签:
【中文标题】在 Visual Studio 2008 上设置预调试事件【英文标题】:Set a pre debug event on Visual Studio 2008 【发布时间】:2011-05-06 08:55:22 【问题描述】:我想在开始在 Visual Studio 中调试我的程序之前运行一个任务。 每次调试程序时,我都需要运行此任务,因此构建后事件还不够好。
我查看了设置的“调试”选项卡,但没有这样的选项。
有什么办法吗?
【问题讨论】:
【参考方案1】:您可以尝试的唯一方法 (IMO) 是在 Project Properties 的 Debugging 页面中试验 Command 属性,但我认为不会起作用。
编辑:如果你想启动一个批处理文件,这样做,
yourbatch.bat $(targetPath)
在 yourbatch.bat 中你可以这样称呼你的程序,
call %1 %2 %3 %4 %5 %6 %7 %8 %9
其中 %2 ... %3 代表可能的程序参数(由您的 IDE 提供)
我唯一想知道的是您的程序是否会直接调试(我认为您可能必须在 IDE 中手动附加)
【讨论】:
这听起来是个好主意,但是如何将两个命令放在同一行上呢?假设我想调用myscript.bat
,然后调用$(TargetPath)
,你将如何在同一命令行上调用它们。调试器也不会尝试调试myscript.bat
吗?
@jules 将所有命令放在 .cmd/.bat 文件中。您可以使用 CALL 命令从 .bat 文件中调用 .bat 文件(请参阅computerhope.com/batch.htm 以获得帮助)。
有没有人知道是否会直接调试项目?【参考方案2】:
在“调试”版本的编译选项中添加预构建步骤,并且在“发布”版本中没有它。 (编辑:预构建步骤在项目属性的构建事件部分中设置)
如果您在谈论代码中的函数或其他内容,请使用预编译器标志。例如,在您的调试版本中,您可能有“_DEBUG”或类似编译器标志的东西......所以在代码中您可以这样做
#ifdef _DEBUG
doMySpecialTask();
#endif
它只会在使用调试版本时被调用。
编辑:从下面的评论中上移信息:
要在运行时动态检测调试器,您可以在 Windows 中使用 IsDebuggerPresent()
函数。 Mac 也有一个AmIBeingDebugged()
。如果您希望程序在调试时表现不同,这很有用,但我不建议这样做,除非没有其他选项有用。在调试时修改程序的行为可能会导致问题消失,或以不同的方式表现出来。
【讨论】:
但是即使我不需要构建应用程序也会调用预构建事件吗? @jules 不,如果您不构建应用程序,则不会。在这种情况下,您可以改用#ifdef
语句。例如doMySpecialTask()
可以运行 .bat 文件或 .cmd 文件来启动应用程序,甚至启动应用程序。这将在您使用调试版本时起作用,而不仅仅是在您构建它时。如果您需要始终动态检测调试器,请在 Windows 中使用 IsDebuggerPresent
函数。见msdn.microsoft.com/en-us/library/ms680345%28v=vs.85%29.aspx以上是关于在 Visual Studio 2008 上设置预调试事件的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2008 C#控件textbox背景如何设置为透明?
如何在 Visual Studio 2008 的整个解决方案上运行 FxCop
Visual Studio 2008 网络驱动器信任和 .NET 4.0
Visual Studio 2003 预构建脚本找不到“svn”命令