编辑:基本上我需要的是 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/