强制visual studio在调试时始终"重建所有"

Cam*_*Cam 11 assembly compilation masm visual-studio-2010 visual-studio

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


我目前正在使用visual studio来编译我的汇编程序,使用MASM,一般来说它工作正常.

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

如果我包含这样的文件(比如带有函数的文件)

Include functions.inc
Run Code Online (Sandbox Code Playgroud)

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

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

有任何想法吗?

Jag*_*uar 8

您可以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
Run Code Online (Sandbox Code Playgroud)

这是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
Run Code Online (Sandbox Code Playgroud)

  • 嘿,我遇到它,因为我自己正在寻找解决方案,我有同样的问题(虽然在不同的情况下),并且激怒了看msdn mvp推动每次手工重建的想法 (3认同)

use*_*238 6

确保您已在配置管理器中选择了用于构建的启动项目:

构建 -> 配置管理器 -> 检查所有相关项目的“构建”列。