Question

Edit: En fait ce que j'ai besoin est pour le studio visuel pour reconstruire toujours tout quand je frappe debug

.

Je suis actuellement en utilisant Visual Studio pour compiler mes programmes d'assemblage, en utilisant MASM et en général, il fonctionne très bien.

Cependant, j'ai rencontré un problème gênant:

Si j'inclure un fichier (par exemple, un fichier avec des fonctions) comme ceci

Include functions.inc

et le compiler, il fonctionne à l'origine bien. Toutefois, si je puis changement le contenu de functions.inc, ce n'est pas reconnu et les compilateurs saute functions.inc et utilise l'ancienne version d'avant je l'ai changé.

Je ne peux pas trouver une option partout dans les propriétés du projet pour résoudre ce problème. Cependant, je suis sûr qu'il a quelque chose à voir avec des options de l'éditeur de liens ou quelque chose - si je fais des changements en propriétés du projet (même si je change quelque chose et le changer en arrière, puis appuyez sur OK), il ne compile correctement avec la nouvelle version de functions.inc.

Toutes les idées?

Était-ce utile?

La solution

Vous pouvez modifier le comportement par la macro EnvironmentEvents dans Explorateur de macros 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

Ceci est un changement de VisualStudio il fonctionnera dans toutes les solutions une fois définies

UPDATE La solution ci-dessus fonctionne, mais il a quelques pièges concernant les fichiers de contenu où l'IDE passe en mode de conception, même si le débogueur est en cours d'exécution. Il essayer de construire alors que le débogueur est en cours d'exécution dans certaines situations. La bonne solution est la suivante:

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

Autres conseils

Assurez-vous que vous avez sélectionné le projet de démarrage pour la construction dans le Gestionnaire de configuration:

Construire -> Configuration Manager -.> Vérifier la colonne 'Build' pour tous les projets concernés

Prise en charge de code ASM VS est pas tout à fait comme auto-magique que .NET / C ++ et vous devez l'aider un peu. Nous utilisons un fichier MAKE pour compiler notre code ASM VS. Le fichier MAKE définit toutes les dépendances afin que les changements dans les fichiers INC sont compilés la prochaine fois que le fichier est compilé ASM.

Un script de construction similaire pourrait être créé avec MSBuild mais nous avons jamais pris le temps de le faire.

Une possibilité pourrait être de créer une macro qui ne fonctionne tout simplement Reconstruire tout puis Déclenché le débogueur. carte la macro à une touche. I pense _DTE.ExecuteCommand pourrait être utilisé pour cela. Et si vous voulez encore plus de contrôle sur le débogueur, Debugger2 L'interface a un peu de fonctionnalités exposées.

S'il est une question de VS IDE ne pas être en mesure de comprendre les dépendances (parce qu'il est pas en mesure d'analyser le fichier asm et y développer le directives Include), une solution de force brute qui fonctionne très bien avec MASM est de reconstruire le projet ou même solution: MASM est très, très rapide: j'ai quelques très grands projets MASM, plusieurs dizaines de modules .asm et plus encore COMPREND:. Le plus grand tel projet reconstitue dans une affaire d'un (très) quelques secondes

Attention: Kludge au carré avant. La définition d'une prebuild qui fait une touche à tous les fichiers que vous .asm forcerait automatiquement une reconstruction ...

  1. Faites un clic droit sur votre projet propriétés (colonne de gauche, solution explorateur),
  2. Aller aux propriétés de configuration / Des événements de construction / pré-construction événement
  3. Dans tactile « ligne de commande », tapez » * .Asm »(assurer que vous avez un utilitaire contact du chemin)

Maintenant, chaque fois que vous construisez, tous les fichiers * .asm sera touché (c.-à-modifié apparaissent) et donc recompilé. Et vous ne devez vous rappeler plus que vous devez reconstruire tout, comme cela se produira de toute façon. J'avais prévenu qu'il était une bidouille, non? De plus, l'IDE vous indiquera vos fichiers ont été modifiés en dehors de l'éditeur et souhaitez-vous les recharger. Vous pouvez dire oui!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top