visual-studio - 调试时强制 Visual Studio 始终为 'rebuild all'

标签 visual-studio visual-studio-2010 assembly compilation masm

编辑:基本上我需要的是 Visual Studio 在我点击调试时总是重建所有内容。

我目前正在使用 Visual Studio 来编译我的汇编程序,使用 MASM 并且一般来说它工作正常。

但是我遇到了一个烦人的问题:

如果我包含这样的文件(例如,具有函数的文件)

Include functions.inc

并编译它,它最初工作正常。但是,如果我随后更改了functions.inc 的内容,则无法识别,编译器会跳过functions.inc 并使用我更改之前的旧版本。

我在项目属性下的任何地方都找不到解决此问题的选项。但是我确定它与链接器选项或其他东西有关 - 如果我在项目属性下进行任何更改(即使我更改某些内容并将其更改回来,然后按 OK),它确实可以使用新版本的功能公司

有任何想法吗?

最佳答案

您可以通过 EnvironmentEvents 更改行为Visual Studio 的宏资源管理器中的宏:

Private Enum IDEMode
    Design = 1
    Break = 2
    Run = 3
End Enum

Private _IDEMode As IDEMode = IDEMode.Design

Public Sub DTEDebuggerEvents_OnDebugRun() Handles _
DebuggerEvents.OnEnterRunMode
    If _IDEMode = IDEMode.Design Then
        DTE.ExecuteCommand("Build.RebuildSolution")
    End If
    _IDEMode = IDEMode.Run
End Sub

Public Sub DTEDebuggerEvents_OnDebugDesign() Handles _
    DebuggerEvents.OnEnterDesignMode
    _IDEMode = IDEMode.Design
End Sub

Public Sub DTEDebuggerEvents_OnDebugBreak() Handles _
    DebuggerEvents.OnEnterBreakMode
    _IDEMode = IDEMode.Break
End Sub

这是 VisualStudio 更改,因此一旦设置,它将适用于所有解决方案

更新
上面的解决方案有效,但是它在内容文件方面存在一些缺陷,即使调试器正在运行,IDE 也会更改为设计模式。在某些情况下,它会在调试器运行时尝试构建。正确的解决方法是这样的:
Private _curDebugState As EnvDTE80.dbgProcessState

Public Sub debuggerStateChangedHandler
    (ByVal NewProcess As EnvDTE.Process, 
    ByVal processState As EnvDTE80.dbgProcessState) 
    Handles DebuggerProcessEvents.OnProcessStateChanged
    If _curDebugState = dbgProcessState.dbgProcessStateStop And processState = dbgProcessState.dbgProcessStateRun Then
        DTE.ExecuteCommand("Build.RebuildSolution")
    End If
    _curDebugState = processState
End Sub

关于visual-studio - 调试时强制 Visual Studio 始终为 'rebuild all',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376810/

相关文章:

debugging - GDB中调试过程中的asm代码从何而来?

c# - 设计者未保存基类的属性值

macos - 在哪里可以阅读Mac版Visual Studio 2017中的控制台输出?

wcf - 试图找出为什么我的 WCF 服务不起作用

c++ - Visual Studio 中的 _ITERATOR_DEBUG_LEVEL 错误,接受的解决方案不起作用

c++ - 在 ';' 之前缺少 'template<'

c - 汇编可以工作,但 shellcode 不能

c - 将 C 函数的值返回给 ASM

c# - 关闭应用程序c#后继续处理

c++ - 如何使用threadfence/CUDA5.5